如何使 preg_replace 与这些字符替换一起使用?

How to make this preg_replace work with these character replacement?

嗨,

我很难理解正则表达式中的逻辑。我有这个代码:

preg_replace("~\b$replace\b~","",$file);

其中 $replace 是一个数值,但它应该被封装在 [] 中,看起来像这样:[33] 所以我这样做了:

preg_replace("~\b[$replace]\b~","",$file);

还有这个:

$replace = "[".$value."]";
preg_replace("~\b[$replace]\b~","",$file);

但 none 会解析。这背后的逻辑是什么?

谢谢。

方括号在正则表达式中有特殊含义,所以需要对它们进行转义才能按字面匹配。

您不应在方括号内使用 \b\b 匹配单词边界,即单词字符紧挨着非单词字符。因此,除非 [ 之前和 ] 之后有字母数字字符,否则它不会匹配。

preg_replace("~\[$replace\]", "", $file);

而且一旦你这样做了,你实际上并不需要使用 preg_replace()。这只是一个没有正则表达式模式的固定字符串,所以只需使用 str_replace()

str_replace("[$replace]", "", $file);