抓取网页的时候有时候会需要下载里面的图片或者其他附件,但有的网页里面用的是相对路径,这时候就要转化为绝对路径。
/** * url补全,相对url转化为绝对url * 作用是补全url */ function url2abs($srcurl,$baseurl){ $srcinfo = parse_url($srcurl); //print_r($srcinfo); if(isset($srcinfo['scheme'])) { return $srcurl; } $baseinfo = parse_url($baseurl); $url = $baseinfo['scheme'].'://'.$baseinfo['host']; if(substr($srcinfo['path'], 0, 1) == '/') { $path = $srcinfo['path']; }else{ $path = dirname($baseinfo['path']).'/'.$srcinfo['path']; } $rst = array(); $path_array = explode('/', $path); if(!$path_array[0]) { $rst[] = ''; } foreach ($path_array AS $key => $dir) { if ($dir == '..') { if (end($rst) == '..') { $rst[] = '..'; }elseif(!array_pop($rst)) { $rst[] = '..'; } }elseif($dir && $dir != '.') { $rst[] = $dir; } } if(!end($path_array)) { $rst[] = ''; } $url .= implode('/', $rst); if( !empty($srcinfo['query']) ) $url .= '?'.$srcinfo['query']; return str_replace('\\', '/', $url); }
就这样吧,上代码,完事。代码不是我写的,看起来有点乱,哈哈,不关我事啦
你可能还喜欢下面这些文章
介绍一款工具,memcacheadmin,使用php制作的memcached管理监控工具
赞赏微信赞赏
支付宝赞赏