我需要查看HTML字符串,並將src
屬性爲相對地址的所有<img>
標籤更改爲絕對URL。所以這個:正則表達式將<img>相對URL改爲絕對
<img src="puppies.jpg">
需要成爲:
<img src="http://sitename.com/path/puppies.jpg">
而忽略<img>
標籤,其src
屬性已經是絕對的。
我使用PHP,並假設我需要通過preg_replace()
來運行這個。幫幫我!謝謝!
我需要查看HTML字符串,並將src
屬性爲相對地址的所有<img>
標籤更改爲絕對URL。所以這個:正則表達式將<img>相對URL改爲絕對
<img src="puppies.jpg">
需要成爲:
<img src="http://sitename.com/path/puppies.jpg">
而忽略<img>
標籤,其src
屬性已經是絕對的。
我使用PHP,並假設我需要通過preg_replace()
來運行這個。幫幫我!謝謝!
這是而不是一個正則表達式的工作。這是一個XML/DOM解析器的工作。
我想給DOMDocument一個鏡頭。
$DOM = new DOMDocument;
$DOM->loadHTML($html);
$imgs = $DOM->getElementsByTagName('img');
foreach($imgs as $img){
$src = $img->getAttribute('src');
if(strpos($src, 'http://sitename.com/path/') !== 0){
$img->setAttribute('src', "http://sitename.com/path/$src");
}
}
$html = $DOM->saveHTML();
我upvoted,但它也需要檢查'src'屬性已經絕對,每OP。 – Mathletics
@Mathletics:啊,是的,沒有注意到,我可以補充說:-P –
+1,但我會用getElementsByTagName代替xpath –
這不是正則表達式的工作。這是XML/DOM 解析器的工作。
不是這樣。如果你只是想一個前綴添加到每個src屬性,最好用簡單的字符串函數,甚至不認爲有關XML,正則表達式或DOM解析...
$str = str_replace('<img src="', '<img src="http://prefix', $str);
可以清理錯誤的鏈接(已絕之後)
$str = str_replace('<img src="http://prefixhttp://', '<img src="http://', $str);
不要用regexp/dom炸燬你的代碼,如果你能避免它。
[Javascript:REGEX將所有相對URL改爲絕對]的可能重複(http://stackoverflow.com/questions/7544550/javascript-regex-to-change-all-relative-ur-s-to-absolute) –
這是針對JavaScript的,但原理是一樣的。 –
考慮使用DomDocument類而不是preg來完成HTML內容。 –