【问题标题】:php preg_replace word to link, but word can't be already as part of anchorphp preg_replace 词链接,但词不能已经作为锚的一部分
【发布时间】:2012-01-19 18:45:36
【问题描述】:

我有一些 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>]/

【问题讨论】:

标签: php preg-replace preg-replace-callback


【解决方案1】:

按预期工作的最终解决方案:

$str = preg_replace('~\bnulla\b(?!(?>[^<]*(?:<(?!/?a\b)[^<]*)*)</a>)~iu', '<a href="novo-mega-link.php">$0</a>', $str);

【讨论】:

  • 让我们知道它什么时候坏了,看起来很脆弱。可能更好地使用 HTML 解析器_
  • “HTML parser_”是什么意思?
  • 顾名思义:HTML 解析器。
猜你喜欢
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-22
  • 2012-05-26
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
相关资源
最近更新 更多