PHP拆分url并提取域名、方法、参数
作者:admin 日期:2017-11-10
拆分URL的一个很重要的函数就是parse_url();
它可以将一个url地址拆分为一个一维数组
例如:
PHP代码
- $url = 'http://www.sina.com.cn/abc/de/fg.php?id=1';
- $arr = parse_url($url);
- print_r($arr);
此时$arr就是一个一维数组
PHP代码
- Array
- (
- [scheme] => http
- [host] => www.sina.com.cn
- [path] => /abc/de/fg.php
- [query] => id=1
- )
它的键值是固定的,如果你想取其中的一个值的时候直接就可以拿到啦
例如:
PHP代码
- echo $host = $arr['host'];
这样就会输出www.sina.com.cn了
PHP将相对路径URL转换为绝对路径URL
作者:admin 日期:2017-11-10
在采集程序或者蜘蛛程序中经常会遇到一类问题,就是将网页中相对路径形式的URL转换为绝对路径形式的URL。例如在http://www.abc.cn/blog/1/这个页面中,有一个URL链接为../index.php,那么我们要将它转换为http://www.abc.cn/blog/index.php。下面给出了解决这类问题的代码。该程序能够成功处理各种URL,将其变成绝对形式。
PHP代码
- <?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);
- }
- ?>
广告位