【发布时间】:2015-09-05 17:45:45
【问题描述】:
我正在尝试制作一个匹配“a”标签中不包含的单词的正则表达式,我必须用链接替换一些术语,而不会破坏已经存在的链接。 例如,搜索术语“stackoverflow”,这应该匹配
stackoverflow is magic
但这两个都不应该:
Jump to <a href="stackoverflow.com">stackoverflow</a>
我该怎么做?即使我使用 HTML 解析器,我仍然面临如何将 preg_replace 应用于“a”标签中不包含的术语的问题。
我发现这个正则表达式听起来不错:
(?![^<]*a>)stackoverflow
但不幸的是,这在 PHP 中不起作用。 非常感谢您的帮助
【问题讨论】:
-
一个简短但很老套的方法是 str_replace('>stackoverflow9gag
-
使用
DOMDocument提取文本节点并搜索您的单词。要从您的研究中排除链接内的文本,请使用DOMXPath。