这几天想将html中的相对地址转换成绝对地址,于是上网google了一下,找到了几个php的转换函数,发现处理得不是很完美,有些不能够处理链接中没有引号的url,有些将#开头的也转换成绝对地址,于是自己开始修改,研究了preg_replace函数和php正则表达式,得到下面的转换代码,分享下,希望能够帮助到大家。 以下代码将html中的相对地址转换成绝对地址,使用到了php正则表达式和preg_replace,可以将html中的链接, 图像, javascript和表单提交地址全部转换成绝对地址(除了以#开头的链接,因为是html内部自己的链接,就没有做绝对地址处理),都通过了测试,有什么问题可以在评论中反映。 function real_url($url,$URI) { $URI_PARTS = parse_url($URI); $pnum = substr_count($url,”../”); if(substr($url,0,1) == “/”) $url = preg_replace(“`(.+://.+?)/.*`”,”$1$url”,$URI); if($pnum>0) { for($i=0;$i< ($pnum+1);$i++) { $URI = dirname($URI); } $url = str_replace(“../”,””,$url); $url = $URI.”/”.$url; } else { if(substr_count($url,”:”)<1) { if($url==”.”) $url=$URI; else $url=dirname($URI).’/’.$url; } } //将./替换成空 $url = str_replace(“./”,””,$url); return $url; } function RelativeURLToAbsoulteURL($html,$URI) { […]