我正在寻找可以匹配和替换字符串中的单词的 PHP 正则表达式脚本。
正则表达式只需要匹配完整的单词,我可以通过以下方式轻松完成:
/\b(SEARCH_TERM)\b/
我遇到的问题是某些字符串包含 html 元素,例如<a>标签和<img>标签,其中href和src属性有时可能在其路径中包含要替换的单词。如果在这些元素中替换了这个词,则链接或图像将不再有效。
例如,将以下示例字符串的单词“test”替换为“SEARCH_TERM”:
my test string <a href="http://www.google.com?q=my+test+string">link</a>
将返回:
my SEARCH_TERM string <a href="http://www.google.com?q=my+SEARCH_TERM+string">link</a>
而我需要它忽略 href 属性文本并返回:
my SEARCH_TERM string <a href="http://www.google.com?q=my+test+string">link</a>
我已经研究过使用 Regex 的 Lookbehind Assertions(如下所示),但不允许使用可变长度的通配符。
/(?<!(href|src)=.*)\b(SEARCH_TERM)\b/
注意:我特别需要使用正则表达式而不是 DOM 解析器来执行此操作。