有人可以幫助我,我與正則表達式很差。我有這個正則表達式在相對URL上運行一個preg_replace,將該域預先添加到開頭,並使它們成爲絕對的。它適用於標準的URL,但我正在運行到這樣的URL:正則表達式排除img在哪裏src =「//」
<img src="//domain.com/file.jpg">
。
..這相匹配的正則表達式,然後變得像:
<img src="http://www.newdomain.com//domain.com/file.jpg">
,這顯然打破。
如何修改此正則表達式不接受以兩個斜槓'//'開頭的字符串?
preg_replace("#(<\s*img\s+[^>]*src\s*=\s*[\"'])(?!http)([^\"'>]+)([\"'>]+)#", '$1' .$url. '/$2$3', $html);
使用DOM解析器。一旦遇到有效的HTML標籤,您的解決方案就會中斷,這些標籤與您應如何發送標籤的假設不符。 –
有一個最喜歡的PHP解析器? –