有人可以帮我解决,我对正则表达式很差。我有这个正则表达式在相对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);
答案 0 :(得分:1)
您已排除包含“http”的网址,您可以在其中添加“//” -
(<\s*img\s+[^>]*src\s*=\s*[\"'])(?!(http)|(\/\/))([^\"'>]+)([\"'>]+)
^^^^^^^^^^^^^ Modified here
您可以对其进行测试here