用绝对URL替换相对URL PHP

时间:2019-10-10 01:33:40

标签: php url preg-replace preg-match

我有一个HTML文档。我需要替换相对于绝对的url。

BaseUrl:https://www.example.com/example/

例如

/*different types of relative URL that I want to replace with absolute URL*/
<img src="/relative/url/img.jpg" />
<img src="./relative/url/img.jpg" />
<img src="../relative/url/img.jpg" />
<a src="../../relative/url/img.jpg" /></a>
<a href='relative/url/'>example</a>

/*url i don't want them to change*/
<img src="//example.com/img.jpg" />
<img src="http://example.com/img.jpg" />
<img src="https://example.com/img.jpg" />

所需的输出为:

<img src="https://www.example.com/example/relative/url/img.jpg" />
<img src="https://www.example.com/example/relative/url/img.jpg" />
<img src="https://www.example.com/example/relative/url/img.jpg" />
<a src="https://www.example.com/example/relative/url/img.jpg" /></a>
<a href='https://www.example.com/example/relative/url/'>example</a>

但是我必须考虑src,href和action的单引号和双引号属性值

现在我正在尝试像这样preg_replace:

preg_replace('~(?:src|action|href)=[\'"]\K../(?!/)[^\'"]*~',"$baseUrl$0",$html);

但是它仅适用于某些URL。我想要的是让他们使用我之前提到的所有相对URL。

感谢您的帮助。

0 个答案:

没有答案