我已经在Google和Stackoverflow上进行了搜索,但我找不到任何适用于我的解决方案。
这是我到目前为止所做的:
$string = preg_replace('/'.$keyword.'/i',
'<span class="highlight">$0</span>', $string);
哪个工作正常,除非字符串包含锚标记。但我仍然希望能够突出显示锚标记之外和之内的关键字。
示例:
$keyword = 's';
输出:
我alrady在Google和Stackoverflow上做了 s earch,但我找不到任何 s 解决方案对我来说。
如果有人能够找到解决方案而不必使用 PHP Simple HTML DOM Parser ,我将不胜感激。
答案 0 :(得分:2)
这应该适用于大多数情况:
$string = preg_replace('/(?![^<>]*>)'.preg_quote($keyword,"/").'/i',
'<span class="highlight">$0</span>', $string);
答案 1 :(得分:1)
在我看来,您需要使用DOM解析器,因为您只想处理字符串中的“text”,而不是整个字符串。因此,您需要一种方法来确定什么是“文本”以及什么是HTML属性。
有很多很多的示例,说明为什么正则表达式无法用于解析HTML。