2

我已经在 Google 和 Stackoverflow 上进行了搜索,但找不到任何适合我的解决方案。

这是我到目前为止所拥有的:

$string = preg_replace('/'.$keyword.'/i', 
'<span class="highlight">$0</span>', $string);

效果很好,除非字符串包含锚标签。但我仍然希望能够突出显示锚标签内外的关键字。

例子:

$keyword = 's';

输出:

我已经在GoogleS tackoverflow上进行了搜索但我找不到任何适合我的解决方案

如果有人可以找到解决方案而无需使用PHP Simple HTML DOM Parser ,我将不胜感激。

4

2 回答 2

2

这应该适用于大多数情况:

$string = preg_replace('/(?![^<>]*>)'.preg_quote($keyword,"/").'/i', 
'<span class="highlight">$0</span>', $string);
于 2011-02-11T00:32:29.443 回答
1

在我看来,您需要使用 DOM 解析器,因为您只想处理字符串中的“文本”,而不是整个字符串。因此,您需要一种方法来确定什么是“文本”以及什么是 HTML 属性。

很多例子说明了为什么正则表达式不能用于尝试解析 HTML。

于 2011-02-10T11:11:04.063 回答