朋友正在写一个广告脚本,该脚本将选定短语的链接放在HTML代码中。检查短语不在<a>(或其他)元素
当然,如果这句话已经是一个<a>
元素中(或其他元素不允许它 - 就像如果这句话是在元素的属性中找到),他不希望脚本写出一个链接,因为它会打破验证。
他问我我在想什么。经过一番混乱之后,我问你所有的想法。
只是为了澄清,输入是HTML中的整个博客文章。例如:
<p>This is a short blog post about ponies!</p>
<p>I have <a href="/ponies">written about ponies before</a>.</p>
<p><img src="/media/ponies.jpg" /></p>
对于这个例子,说我想要替换ponies
(任何情况下)与<a href="http://www.ponies.com">ponies</a>
(但与原来的情况下)。
从上面的输出应为:
<p>This is a short blog post about <a href="http://www.ponies.com">ponies</a>!</p>
<p>I have <a href="/ponies">written about ponies before</a>.</p>
<p><img src="/media/ponies.jpg" /></p>
我们并不需要完整的代码,但好的创意/正则表达式是非常受欢迎的。他正在用PHP写这篇文章,但语言无关紧要。
+1的吸住到的所有者回答(这是一个很好的答案btw) – Buggabill 2009-11-18 17:44:56
不回答这个问题,只是指出一个错误的方式,人们有时会接近这个问题。 – 2009-11-18 21:17:24
确实。我没有试图解析HTML,只是检查一个短语是呈现文本,不在无效元素内。当然,答案可能是解析HTML以找出答案,但告诉我们不该做什么,并没有让我们接近这个问题的最佳解决方案。 – Oli 2009-11-18 22:08:50