我需要在我的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