一个将网页里面的(图片,链接地址)相对路径转化为绝对路径的php实现方法

抓取网页的时候有时候会需要下载里面的图片或者其他附件,但有的网页里面用的是相对路径,这时候就要转化为绝对路径。

 
/**
* 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);
}

就这样吧,上代码,完事。代码不是我写的,看起来有点乱,哈哈,不关我事啦

赞赏

微信赞赏支付宝赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注