PHP將相對路徑URL轉換為絕對路徑URL

來源:互聯網
上載者:User

在採集程式或者蜘蛛程式中經常會遇到一類問題,就是將網頁中相對路徑形式的URL轉換為絕對路徑形式的URL。例如在http://www.msphome.cn/blog/1/這個頁面中,有一個URL連結為../index.php,那麼我們要將它轉換為http://www.msphome.cn/blog/index.php。下面給出瞭解決這類問題的代碼。該程式能夠成功處理各種URL,將其變成絕對形式。

<?php$a = 'http://www.abc.com/a/index.html';$b = '../abc/a.js';echo format_url($b, $a);function format_url($srcurl, $baseurl) {  $srcinfo = parse_url($srcurl);  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);  return str_replace('\\', '/', $url);}?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.