用http://替换协议相对URL

时间:2014-03-22 15:52:25

标签: php regex protocol-relative

我有一个应用程序可以加载本地文件并附加下载的HTML数据。此数据有时包含protocol relative URLs,基本上为//domain.com/file而不是http://domain.com/file。好处是,这会自动选择适当的协议,这在网络域上可以正常使用,但在本地加载时则不行 - 然后使用file:// - 协议。

因此,我需要将所有attr="//domain.com/file"替换为attr="http://domain.com/file" - 基本上在前面添加http:。最简单的是用PHP做这个我想,我怎么能实现这个呢?

2 个答案:

答案 0 :(得分:1)

假设 attr="//文字不会显示为<p> ... attr="// ... </p>

等免费文字

使用str_replace

$contents = str_replace('attr="//', 'attr="http://', $contents);

使用preg_replace

$contents = preg_replace('|attr="//|', 'attr="http://', $contents);

答案 1 :(得分:1)

使用preg_replace,如果&#39; attr&#39;只在标签内:

$content = preg_replace('@(<.+?)(attr="//)(.*?>)@', '\\1attr="http://\\3', $content);