我試圖正則表達式src屬性(沒有它的內容/值),並將其替換爲別的東西。正則表達式屬性標記
它也必須驗證HTML標籤(在本例中爲img)。
測試數據例如:
<img src="http://example.com" class="something" />
現在我需要獲得唯一的 「SRC」 和替換它。是否有可能將它作爲首先/唯一匹配PHP中的lookbehind/lookahead?
我試圖正則表達式src屬性(沒有它的內容/值),並將其替換爲別的東西。正則表達式屬性標記
它也必須驗證HTML標籤(在本例中爲img)。
測試數據例如:
<img src="http://example.com" class="something" />
現在我需要獲得唯一的 「SRC」 和替換它。是否有可能將它作爲首先/唯一匹配PHP中的lookbehind/lookahead?
您的意思是?
preg_replace('/(<img[^>]*src=")[^"]*"/', '$1'.$new.'"', $html)
後視是不可能的,因爲它不能變長。
事實上,你不能使用lookbehind(可變長度的原因),但你可以使用'\ K'功能來刪除所有匹配匹配結果,例如:'] * src =「\ K [^」] *(?=「)'那麼您的替換字符串只是:'$ new' –
正則表達式不應該用於解析html。
相反,修改DOM來做你需要的。
$doc = new DOMDocument();
$doc->loadHTML('<img src="http://example.com" class="something" />');
$images = $doc->getElementsByTagName('img');
foreach ($images as $image) {
$image->setAttribute('src','http://www.google.com');
echo htmlentities($doc->saveHTML($image));
}
不要在html上使用正則表達式。使用[DOM](http://php.net/dom) –