Php preg替换包含方括号的字符串

Php preg替换包含方括号的字符串,php,regex,preg-replace,Php,Regex,Preg Replace,我有这样一个字符串:[name-123456] 我试图用一些预定义的字符串替换此字符串的匹配项。以下是我到目前为止的情况: preg_replace('~\['.$string_to_be_replaced.'\]~', $code_to_replace_it_with, $content); 目前这抛出了一个错误,我无法找到如何删除方括号(即使它们是字符串的一部分)。如何确保在正则表达式中删除这些内容,以便将[name-123456]替换为stringofcode 编辑: 这只是返回[nam

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

我试图用一些预定义的字符串替换此字符串的匹配项。以下是我到目前为止的情况:

preg_replace('~\['.$string_to_be_replaced.'\]~', $code_to_replace_it_with, $content);
目前这抛出了一个错误,我无法找到如何删除方括号(即使它们是字符串的一部分)。如何确保在正则表达式中删除这些内容,以便将
[name-123456]
替换为
stringofcode

编辑:

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


vardump生成:
string(16)“\[name \-123456\]”

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

$content = preg_replace('~...~', $rpl.., $content);
然后,您还应该预先使用将要替换的
$string\u转义为
。无论如何,搜索字符串中的
-
都是必需的

$string_to_be_replaced = preg_quote($string_to_be_replaced, "~");
顺便说一句,还将负责
[
]
方括号


如果您没有进行任何断言或复杂匹配,
str_replace()
可能是一种替代方法。

这些括号替换可能有多个实例。那么最终的正则表达式会是什么样子呢?这:$string\u to\u be\u replacement=preg\u quote($string\u to\u be\u replacement,“~”)$content=preg_replace(“~[”.$string_to_be_replace.]~”,$str_to_replace_with,$content);?很抱歉,后面的斜线被去掉了。是的,看起来可行。尽管你有一个方括号搜索和相关替换字符串的列表,
preg\u replace\u callback
可能是更好的选择。好吧,对我来说很有效,你的问题可能存在于其他地方。嗯,包括方括号两次可能是个问题。我希望在进行preg替换之前,避免使用str replace从[name-123456]中删除方括号。希望能有一个集所有功能于一身的解决方案。
$string_to_be_replaced = preg_quote($string_to_be_replaced, "~");