我的网站上有一项功能,搜索结果中突出显示了搜索查询。但是,该站点搜索的某些字段中包含 HTML。例如,假设我的搜索结果由<span>Hello all</span>
. 如果用户搜索 letter a
,我希望代码返回而不是现在返回<span>Hello <mark>a</mark>all</span>
的混乱。<sp<mark>a</mark>n>Hello <mark>a</mark>ll</sp<mark>a</mark>n>
我知道我可以使用否定的lookbehinds 和lookaheads inpreg_replace()
来排除a
a<
和>
. 但是我该怎么做呢?正则表达式是我的弱点之一,我似乎无法提出任何工作。
到目前为止,我得到的是:
$return = preg_replace("/(?<!\<[a-z\s]+?)$match(?!\>[a-z\s]+?)/i", '<mark>'.$match.'</mark>', $result);
但这似乎不起作用。有什么帮助吗?