我需要在我的html页面的属性称号执行的每一个环节上的正则表达式,基于以下规则:更换链接标题
- 链接等于锚文本。
- 链接确实不是有标题属性。
我写了这个代码:
$x = 'gg <a href="#">Anchor 1</a>, <a href="#" title="text">Anchor 2</a>';
echo preg_replace('/\<a([^<]*)(?!title)>([^<]+)\<\/a/isu', '<a${1} title="${2}">${2}</a', $x);
但我得到这个意外结果:
gg <a href="#" title="Anchor 1">Anchor 1</a>, <a href="#" title="text" title="Anchor 2">Anchor 2</a>
第二个环节有2个title属性。为什么这不按预期工作?我该如何解决它?
使用html dom解析器来执行此操作,而不是正则表达式 – DevZer0
lookahead断言''!'不掩盖'[^ <] *'占位符。这只是你放置它的地方。 – mario
[添加一个nofollow属性来链接,如果没有使用PHP标题标记](http://stackoverflow.com/questions/6160645/add-a-nofollow-attribute-to-link-if-no-title-使用php) – mario