function highlight_phrase($str, $phrase, $class='highlight')
{
if ($str == '')
{
return '';
}
if ($phrase != '')
{
return preg_replace('/('.preg_quote($phrase, '/').')/Ui', '<span class="'.$class.'">'."\\1".'</span>', $str);
}
return $str;
}
上面的代码是我用来突出字符串中的短语。我对以下问题有疑问:
如果短语是新车,它会匹配新车和新车的字符串,这意味着它突出了新车的新车,但我不需要突出新车。
我可以检查空间,但如果短语结束了,那该怎么办?要么 !等
答案 0 :(得分:1)
使用\b
模式匹配字边界,即在您的情况下/\b(new car)\b/
将匹配
但不是
答案 1 :(得分:0)
将(?!\w)
添加到正则表达式。这将使其仅在短语后跟非单词字符[^a-zA-Z0-9_]
时匹配。
return preg_replace('/('.preg_quote($phrase, '/')(?!\w)')/Ui', '<span class="'.$class.'">'."\\1".'</span>', $str);