如何使用PHP在HTML输入文本中突出显示搜索结果?

时间:2018-11-30 09:53:00

标签: php html regex highlight

我有一些输入HTML,需要突出显示其中的一些单词。
我看到了很多建议,现在我使用preg_replace。

 $output = preg_replace("/\w*?" . preg_quote($keyword) . "\w*/i",
        "<span class=\"entity_hilight\">$0</span>", $input);

它完全可以正常工作,但是如果输入的HTML在某些标记属性中不包含关键字。

例如,如果我需要突出显示关键字“夏威夷”,则在应用上述代码后,该HTML代码将被破坏:

Hawaii is on of the best places for fun and recreation. Welcome to <a href="http://example.com/Hawaii">Hawaii hotels</a>

因为代码不仅会替换<a>标签中的夏威夷,而且还会替换href属性中的夏威夷。

那么如何避免突出显示破坏HTML代码呢?请注意,我需要同时突出显示HTML标签内部和外部的单词,并且它也应与嵌套标签一起正常使用。标签以及属性可以具有任何甚至自定义名称,因此我无法明确定义任何可能的标签和属性名称列表。同样,有时关键字不仅可以与属性值匹配,而且可以与属性名称或标签名称匹配(例如,如果我需要高亮度关键字“ strong”或“ article”或“ class”)。

0 个答案:

没有答案