php - 在追溯断言中,PHP: 正规表达式 使用通配符替换单词

  显示原文与译文双语对照的内容

我想创建一个能够匹配和替换字符串中单词的PHP 正规表达式 脚本。

正规表达式 只需要匹配完整的单词,我可以轻松地完成这些单词:


/b(SEARCH_TERM)b/



i 问题是有些字符串包含html元素,如 <a> tags标记和标记tags标记 sometimes sometimes <attributes标记sometimes在它们的路径中包含to-be-replaced字。 如果在这些元素中替换了这个单词,那么链接或者图像将不再工作。

例如用'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>



我已经查看过如何使用 正规表达式 断言( 就像下面一样)的回溯,但不允许可变长度通配符。


/(?<!(href|src)=.*)b(SEARCH_TERM)b/



注意:我特别需要使用 正规表达式,而不是DOM解析器。

时间: 原作者:

就像我提到的,你需要使用一个 html解析器。

但如果你想


/btestb(?=[^>]*(<|$))/s



如果前面有 < 或者 end of string ( 非线条),而没有匹配的>,则 正规表达式 将匹配

注释

如果文本本身包含 >,则这将不起作用。

例如

 
 hello>world



 

因此,你应该使用解析器的原因

原作者:
...