我正在尝试突出$ vQuery中的确切术语,如果$ vQuery是单词的一部分,它现在将突出显示整个单词。我不能使用str_replace或str_ireplace,因为需要显示的内容与替换内容之间存在大小写问题,因此我使用preg_replace留下了一个过于复杂的语句。
preg_replace("/\b".$vQuery."\b/i", "<span class=\"highlightedTerm\">$0</span>", $vName);
上述声明会按照预期进行匹配,但我会搜索car
它会突出显示所有字词car
,但它也会突出显示包含car
的任何内容。
是否有一种简单的方法可以修改模式以使其完全匹配?!
修改
说我有:
This is the carpet in my car.
我希望输出如下:
This is the <span class="highlightedTerm">car</div>pet in my <span class="highlightedTerm">car</div>.
目前,我得到的是:
This is the <span class="highlightedTerm">carpet</div> in my <span class="highlightedTerm">car</div>.
希望更清楚。
答案 0 :(得分:0)
在学期结束时和开头添加空格。这样你只能抓住&#39;汽车&#39;而不是卡通&#39;。这是你在找什么?
答案 1 :(得分:0)
奇怪,因为单词边界应该已经完成了这个技巧..即
/\bHello\b/
您也可以尝试在开头没有单词边界,因为字符串可能只有一个单词。
/Hello\b/
您还可以使搜索不区分大小写
/\bHello\b/i
如果导致问题的单词中有特殊字符,您可以将它们显示为utf-8以防万一
/\bHello\b/u
或以上所有
/Hello\b/iu
答案 2 :(得分:0)
在@jurgemaister的帮助下,我能够弄清楚它是否适合我的情况。
preg_replace("/".$this->mQuery."/i", "<span class=\"highlightedTerm\">$0</span>", $vName);