2

我有一些 HTML 内容:

<p>
Nunc nulla tincidunt metus sed eros auctor sagittis. Sed malesuada, mi et ornare 
molestie, urna dui 
<a href="http://google.com/" title="condimentum nulla">condimentum nulla, ut luctus</a> nisl ipsum ut dui. 
Praesent aliquam velit quis neque congue consectetur <b>nulla</b>. 
Curabitur turpis risus, malesuada nec volutpat sit amet, auctor porta velit.
</p>

而且我想将所有“nulla”单词替换为链接,但前提是“nulla”不是另一个链接 url 或其他 HTML 参数(标题、alt)的一部分。在上面的示例脚本中,应该只替换第一个和最后一个“nulla”单词,其他的保持原样。我坚持使用这个正则表达式,但它不能按我想要的方式工作:

/[^<a]+[^>]*nulla[^<\/a>]/
4

1 回答 1

3

可以正常工作的最终解决方案:

$str = preg_replace('~\bnulla\b(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~iu', '<a href="novo-mega-link.php">$0</a>', $str);
于 2011-12-14T23:05:33.547 回答