PHP將相對路徑URL轉換為絕對路徑URL
阿新 • • 發佈:2019-02-08
在採集程式或者蜘蛛程式中經常會遇到一類問題,就是將網頁中相對路徑形式的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); } ?>