php解析url的几种方式

1、利用$_SERVER内置数组变量

访问:
http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1

//URL的参数echo $_SERVER['QUERY_STRING'];返回:m=admin&c=index&a=lists&catid=1&page=1//包含文件名echo $_SERVER["REQUEST_URI"];

返回:

/test.php?m=admin&c=index&a=lists&catid=1&page=1

2、利用pathinfo内置函数

echo "<pre>";$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';var_export(pathinfo($url));

返回:

array (  'dirname' => 'http://localhost',  'basename' => 'test.php?m=admin&c=index&a=lists&catid=1&page=1#top',  'extension' => 'php?m=admin&c=index&a=lists&catid=1&page=1#top',  'filename' => 'test',)

3、利用parse_url内置函数

echo "<pre>";$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';var_export(parse_url($url));

返回:

array (  'scheme' => 'http',  'host' => 'localhost',  'path' => '/test.php',  'query' => 'm=admin&c=index&a=lists&catid=1&page=1',  'fragment' => 'top',)

4、利用basename内置函数

echo "<pre>";$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';var_export(basename($url));

返回:

test.php?m=admin&c=index&a=lists&catid=1&page=1#top

5、正则匹配

echo "<pre>";$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';preg_match_all("/(\w+=\w+)(#\w+)?/i",$url,$match);var_export($match);

返回:

array (  0 =>   array (    0 => 'm=admin',    1 => 'c=index',    2 => 'a=lists',    3 => 'catid=1',    4 => 'page=1#top',  ),  1 =>   array (    0 => 'm=admin',    1 => 'c=index',    2 => 'a=lists',    3 => 'catid=1',    4 => 'page=1',  ),  2 =>   array (    0 => '',    1 => '',    2 => '',    3 => '',    4 => '#top',  ),)

url常用处理方法

/** * 将字符串参数变为数组 * @param $query * @return array */function convertUrlQuery($query){    $queryParts = explode('&', $query);    $params = array();    foreach ($queryParts as $param) {        $item = explode('=', $param);        $params[$item[0]] = $item[1];    }    return $params;}/** * 将参数变为字符串 * @param $array_query * @return string */function getUrlQuery($array_query){    $tmp = array();    foreach ($array_query as $k => $param) {        $tmp[] = $k . '=' . $param;    }    $params = implode('&', $tmp);    return $params;}

例:

echo "<pre>";$url = 'http://localhost/test.php?m=admin&c=index&a=lists&catid=1&page=1#top';$arr = parse_url($url);$arr_query = convertUrlQuery($arr['query']);var_export($arr_query);

返回:

array (  'm' => 'admin',  'c' => 'index',  'a' => 'lists',  'catid' => '1',  'page' => '1',)
var_export(getUrlQuery($arr_query));

返回:

m=admin&c=index&a=lists&catid=1&page=1

相关教程推荐:《PHP教程》

更多相关文章

  1. 直击PHP array_reverse() 函数原理及实例解析
  2. 示例PHP实现单文件、多个单文件、多文件上传函数的封装
  3. 探秘PHP number_format函数原理及实例解析
  4. 详解在PHP模板引擎smarty生成随机数的方法和math函数
  5. 解析PHP vsprintf()函数格式化字符串操作原理
  6. PHP如何自定义的 printf 函数
  7. 学习php中利用explode函数分割字符串到数组
  8. PHP使用Closure创建匿名函数的方法介绍
  9. php in_array函数用法(实例)

随机推荐

  1. 进度条背景的改变,界面更美观
  2. Android开发环境配置备忘录
  3. 介绍一个Android开源项目:GifView——Andr
  4. android studio连接adb,远程调试
  5. Android View类属性及方法
  6. Android(安卓)平板 Q3 全球市佔升至 27%
  7. XamarinAndroid组件教程RecylerView动画
  8. Android(安卓)副屏density设置,解决副屏vi
  9. 在android 4.0 上面移植camera的一些心得
  10. android RatingBar