preg_replace不替换字符串php中的特殊字符

时间:2017-01-20 12:52:37

标签: php preg-replace

$value['keyword']='P|$$';<br>
$keyword = preg_quote($value['keyword'], '/');<br>
$question = "verying P|$$ quedon";<br>
echo $abc =  preg_replace( "/\b($keyword)\b/i",'<span style="color:red">$1</span>',$question);<br>

我希望字符串的匹配关键字为红色

1 个答案:

答案 0 :(得分:0)

$之后的单词边界需要在其后面出现单词char,因此此处不会发生替换。

如果关键字前面或后面跟着单词字符,那么您需要使用(?<!\w)(?!\w)外观定义的明确边界替换单词边界,这些边界会使匹配失败:

$value['keyword']='P|$$';
$keyword = preg_quote($value['keyword'], '/');
$question = "verying P|$$ quedon";
echo $abc =  preg_replace( "/(?<!\w)($keyword)(?!\w)/i",'<span style="color:red">$1</span>',$question);

请参阅PHP demo