如何在String中找到关键字而不是在特殊标签之间?

时间:2014-11-17 13:36:20

标签: php regex search

我试图在字符串中查找关键字列表,如下所示:

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam 
nonumy eirmod tempor <b>invidunt ut labore et dolore</b> magna aliquyam erat, 
sed diam voluptua. <a href="not/replace/me/">dolore</a> ipsum erat.

...使用以下RegExp:

%\b(Lorem)\b(?=[^>]*(<(link|a)|$))%msiu
%\b(dolore)\b(?=[^>]*(<(link|a)|$))%msiu

这在最好的时候工作。但是如果字符串中的其他标签(如上例中的粗体标签)则没有找到任何内容。如果这不在里面,它可以正常工作。

我想要的结果:

<a href="myurl/to/somewhere/">Lorem</a> ipsum dolor sit amet, consetetur sadipscing elitr, sed diam 
nonumy eirmod tempor <b>invidunt ut labore et <a href="url/to/">dolore</a></b> magna aliquyam erat, 
sed diam voluptua. <a href="not/replace/me/">dolore</a> ipsum erat.

目前只有在字符串中没有其他标签,如 B 或其他标签时,它才有效。但如果内置 A 链接等标签,它也可以使用。只要字符串中有其他标签,就不会有任何替换。

我做错了什么?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我想我已经解决了这个问题:

 %(?i)\bMY_KEYWORD\b(?=[^<>]*(?:<\w|<\/[^link|a]|$))%msi

就我而言,它有效:)