我有一个这样的字符串:[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\]"
答案 0 :(得分:1)
您的第一个问题可能是您没有分配结果:
$content = preg_replace('~...~', $rpl.., $content);
然后您还应该事先使用preg_quote
转义$string_to_be_replaced
。无论如何,搜索字符串中的-
都是必要的。
$string_to_be_replaced = preg_quote($string_to_be_replaced, "~");
还会处理[
方]
括号,顺便说一句。
如果你没有做任何断言或复杂的匹配,str_replace()
可能是另一种选择。