0

我有一个这样的字符串:[name-123456].

我试图用一些预定义的字符串替换这个字符串的匹配。这是我到目前为止所拥有的:

preg_replace('~\['.$string_to_be_replaced.'\]~', $code_to_replace_it_with, $content);

目前这会引发错误,我不知道如何删除方括号(即使它们是字符串的一部分)。我如何确保那些在正则表达式中被删除,以便[name-123456]被替换为stringofcode

编辑:

$string_to_be_replaced = preg_quote($string_to_be_replaced, "~"); 
$content = preg_replace('~\['.$string_to_be_replaced.'\]~', $str_to_replace_with, $content);

这只是返回 [name-123456] :p

vardump 产生:string(16) "\[name\-123456\]"

4

1 回答 1

1

您的第一个问题可能是您没有将结果分配回去:

$content = preg_replace('~...~', $rpl.., $content);

那么你也应该事先逃避$string_to_be_replaced使用。无论如何,在您的搜索字符串中都是preg_quote必需的。-

$string_to_be_replaced = preg_quote($string_to_be_replaced, "~");

顺便说一句,还会处理[]括号。

如果您不进行任何断言或复杂匹配,str_replace()则可能是另一种选择。

于 2013-02-24T16:31:38.073 回答