2014-02-28 46 views
0

有人可以幫助我,我與正則表達式很差。我有這個正則表達式在相對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); 
+0

使用DOM解析器。一旦遇到有效的HTML標籤,您的解決方案就會中斷,這些標籤與您應如何發送標籤的假設不符。 –

+0

有一個最喜歡的PHP解析器? –

回答

1

你已經被排除了有 「HTTP」,您可以添加 「//」 到網址 -

(<\s*img\s+[^>]*src\s*=\s*[\"'])(?!(http)|(\/\/))([^\"'>]+)([\"'>]+) 
            ^^^^^^^^^^^^^ Modified here 

您可以測試它here

+0

太好了,謝謝! –