PHP将相对路径URL转换为绝对路径URL

 在采集程序或者蜘蛛程序中经常会遇到一类问题,就是将网页中相对路径形式的URL转换为绝对路径形式的URL。例如在http://www.abc.cn/blog/1/这个页面中,有一个URL链接为../index.php,那么我们要将它转换为http://www.abc.cn/blog/index.php。下面给出了解决这类问题的代码。该程序能够成功处理各种URL,将其变成绝对形式。

PHP代码
  1. <?php  
  2. $a = 'http://www.abc.com/a/index.html';  
  3. $b = '../abc/a.js';  
  4. echo format_url($b$a);  
  5.   
  6. function format_url($srcurl$baseurl) {  
  7.   $srcinfo = parse_url($srcurl);  
  8.   if(isset($srcinfo['scheme'])) {  
  9.     return $srcurl;  
  10.   }  
  11.   $baseinfo = parse_url($baseurl);  
  12.   $url = $baseinfo['scheme'].'://'.$baseinfo['host'];  
  13.   if(substr($srcinfo['path'], 0, 1) == '/') {  
  14.     $path = $srcinfo['path'];  
  15.   }else{  
  16.     $path = dirname($baseinfo['path']).'/'.$srcinfo['path'];  
  17.   }  
  18.   $rst = array();  
  19.   $path_array = explode('/'$path);  
  20.   if(!$path_array[0]) {  
  21.     $rst[] = '';  
  22.   }  
  23.   foreach ($path_array AS $key => $dir) {  
  24.     if ($dir == '..') {  
  25.       if (end($rst) == '..') {  
  26.         $rst[] = '..';  
  27.       }elseif(!array_pop($rst)) {  
  28.         $rst[] = '..';  
  29.       }  
  30.     }elseif($dir && $dir != '.') {  
  31.       $rst[] = $dir;  
  32.     }  
  33.    }  
  34.   if(!end($path_array)) {  
  35.     $rst[] = '';  
  36.   }  
  37.   $url .= implode('/'$rst);  
  38.   return str_replace('\\', '/', $url);  
  39. }  
  40. ?>  

 



上一篇: 函数:PHP将字符串编码从GBK转换为UTF8字符集iconv
下一篇: PHP拆分url并提取域名、方法、参数
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php
相关日志:
评论: 0 | 引用: 0 | 查看次数: 361
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑