您的位置:首页 > 编程语言 > PHP开发

使用PHP将超链接的相对地址转换为绝对地址

2012-03-08 16:41 369 查看
前段时间在做网页内容自动采集时,读取到的源代码里常常是相对地址,而且文件深度各不相同,很伤脑筋.

今天定下心来编成了个函数,效果还不错,先发出来.希望还有更好的办法.

function url_real($base,$url=''){
if(preg_match("~^(magnet|thunder|flashget|[fht]+p):~",$url,$tmp)){
return $url;
}
$base=preg_replace("~/[^/]+\.\w+$~","",$base);
$base=preg_replace("~^\s*http://|/\s*$~","",$base);
$roads=preg_split("~/~",$base);
$host=$roads[0];
if(preg_match("~^/~",$url,$tmp)){
return "$host$url";
}
$up=preg_match_all("~(\.\./)~",$url,$tmp);
$up=$up>0?$up:0;
$roads=array_slice($roads,1);
$keep=count($roads)-($up>count($roads)?count($roads):$up);
$roads=array_slice($roads,0,$keep);
$roads=implode("/",$roads);
$paths=preg_replace("~^\./~","",$url);
$paths=preg_split("~/~",$paths);
$paths=array_slice($paths,$up,count($paths)-$up);
$paths=implode("/",$paths);
return "$host".($roads?"/$roads":"")."/$paths";
}


效果演示: http://guilyn.host.org/demo/url_real.php
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php url up