如何使 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);
嗨,
我很难理解正则表达式中的逻辑。我有这个代码:
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);