正则表达式排除img,其中src =“//”

时间:2014-02-28 19:11:25

标签: php regex html-parsing

有人可以帮我解决,我对正则表达式很差。我有这个正则表达式在相对URL上运行preg_replace,将域前置到开头并使它们成为绝对值。它适用于标准URL,但我遇到的URL是这样的:

<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);

1 个答案:

答案 0 :(得分:1)

您已排除包含“http”的网址,您可以在其中添加“//” -

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

您可以对其进行测试here