我正在尝试创建一个脚本,将所有相对路径转换为绝对路径
那么如何在html文本中找到并替换
的所有出现src="/jsfile.js
带
src="http://mysite.com/jsfile.js
然后
src="../jsfile.js
带
src="http://mysite.com/jsfile.js
然后
src="js/jsfile.js
带
src="http://mysite.com/js/jsfile.js
也许更多的情况?当然还有href场景
也许我的问题写得不好,但目标是将任何相对网址或相对链接替换为绝对网址...我不确定以下答案是否正常工作
答案 0 :(得分:1)
使用preg_replace
的单个正则表达式怎么样?它也适用于href
和src
属性。请务必查看演示以查看它的实际效果!
这会正确转换所有上述测试用例:
$result = preg_replace( '/(src|href)="(?:\.\.\/|\/)?([^"]+)"/i', '$1="' . $url . '/$2"', $test);
答案 1 :(得分:0)
这不是一个很好的比较。这两个功能有不同的用途。我个人会按顺序使用三个:
答案 2 :(得分:0)
如果超过3,请使用
$pathes=array(
'src="/jsfile.js' => 'src="http://mysite.com/jsfile.js',
'src="../jsfile.js' => 'src="http://mysite.com/jsfile.js',
'src="js/jsfile.js' => 'src="http://mysite.com/js/jsfile.js'
);
$newhtml=str_replace(array_keys($pathes),$pathes,$oldhtml);
答案 3 :(得分:0)
<?php
$html = file_get_contents('index.html');
$html = preg_replace_callback('#"(\S+).js"#', "replace_url", $html);
function replace_url($url) {
return '"http://'.$_SERVER['HTTP_HOST'].chr(47).trim($url[1], '/,.').'.js"';
}
echo $html;
使用preg_replace_callback