php解析url并得到url中的参数及获取url参数的四种方式


Posted in PHP onOctober 26, 2015

下面一段代码是php解析url并得到url中的参数,代码如下所示:

<?php
$url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&area=0&author=0&h=0®ion=0&s=1&page=1';
$arr = parse_url($url);
var_dump($arr);
$arr_query = convertUrlQuery($arr['query']);
var_dump($arr_query);
var_dump(getUrlQuery($arr_query));
/**
 * 将字符串参数变为数组
 * @param $query
 * @return array array (size=10)
          'm' => string 'content' (length=7)
          'c' => string 'index' (length=5)
          'a' => string 'lists' (length=5)
          'catid' => string '6' (length=1)
          'area' => string '0' (length=1)
          'author' => string '0' (length=1)
          'h' => string '0' (length=1)
          'region' => string '0' (length=1)
          's' => string '1' (length=1)
          'page' => string '1' (length=1)
 */
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 string 'm=content&c=index&a=lists&catid=6&area=0&author=0&h=0®ion=0&s=1&page=1' (length=73)
 */
function getUrlQuery($array_query)
{
  $tmp = array();
  foreach($array_query as $k=>$param)
  {
    $tmp[] = $k.'='.$param;
  }
  $params = implode('&',$tmp);
  return $params;
}

下面通过四种实例给大家介绍php url 参数获取方式。

在已知URL参数的情况下,我们可以根据自身情况采用$_GET来获取相应的参数信息($_GET['name']);那,在未知情况下如何获取到URL上的参数信息呢?

第一种、利用$_SERVER内置数组变量

相对较为原始的$_SERVER['QUERY_STRING']来获取,URL的参数,通常使用这个变量返回的会是类似这样的数据:name=tank&sex=1
如果需要包含文件名的话可以使用$_SERVER["REQUEST_URI"](返回类似:/index.php?name=tank&sex=1)

第二种、利用pathinfo内置函数

 代码如下:

<?php
$test = pathinfo("http://localhost/index.php");
print_r($test);
/*

结果如下

Array
(
   [dirname] => http://localhost //url的路径
   [basename] => index.php //完整文件名
   [extension] => php //文件名后缀
   [filename] => index //文件名
)
*/
?>

第三种、利用parse_url内置函数

代码如下:

<?php
$test = parse_url("http://localhost/index.php?name=tank&sex=1#top");
print_r($test);
/*

结果如下

Array
(
   [scheme] => http //使用什么协议
   [host] => localhost //主机名
   [path] => /index.php //路径
   [query] => name=tank&sex=1 // 所传的参数
   [fragment] => top //后面根的锚点
)
*/
?>

第四种、利用basename内置函数

代码如下:

<?php
$test = basename("http://localhost/index.php?name=tank&sex=1#top");
echo $test;
/*

结果如下

index.php?name=tank&sex=1#top
*/
?>

另外,还有就是自己通过正则匹配的处理方式来获取需要的值了。这种方式较为精确,效率暂不考虑。。。
下面拓展实践下正则处理方式:

代码如下:

<?php
preg_match_all("/(\w+=\w+)(#\w+)?/i","http://localhost/index.php?name=tank&sex=1#top",$match);
print_r($match);
/*

结果如下

Array
(
  [0] => Array
    (
      [0] => name=tank
      [1] => sex=1#top
    )
  [1] => Array
     (
      [0] => name=tank
       [1] => sex=1
     )
   [2] => Array
    (
       [0] =>
      [1] => #top
    )
)
*/
?>
PHP 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
基于Discuz security.inc.php代码的深入分析
Jun 03 PHP
关于php循环跳出的问题
Jul 01 PHP
php Imagick获取图片RGB颜色值
Jul 28 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
Mar 25 PHP
ThinkPHP框架里隐藏index.php
Apr 12 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
php实现文章评论系统
Feb 18 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 PHP
php实现CSV文件导入和导出
Oct 24 #PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 #PHP
php实现表单多按钮提交action的处理方法
Oct 24 #PHP
一个简单至极的PHP缓存类代码
Oct 23 #PHP
10款实用的PHP开源工具
Oct 23 #PHP
PHP制作用户注册系统
Oct 23 #PHP
解决更换PHP5.4以上版本后Dedecms后台登录空白问题的方法
Oct 23 #PHP
You might like
php上传文件的增强函数
2010/07/21 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP数字金额转换成中文大写显示
2019/01/05 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
AngularJS 中文API参考手册
2016/07/28 Javascript
JS实现浏览器打印、打印预览示例
2017/02/28 Javascript
NodeJS自定义模块写法(详解)
2017/06/27 NodeJs
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
[36:14]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第二局
2016/02/28 DOTA
[05:43]VG.R战队教练Mikasa专访:为目标从未停止战斗
2016/08/02 DOTA
简单介绍Python中的decode()方法的使用
2015/05/18 Python
Python返回数组/List长度的实例
2018/06/23 Python
python最小生成树kruskal与prim算法详解
2019/01/17 Python
Python列表切片操作实例总结
2019/02/19 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
25个CSS3动画按钮和菜单教程分享
2012/10/03 HTML / CSS
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
高考学习决心书
2015/02/04 职场文书
材料员岗位职责
2015/02/10 职场文书
导师鉴定意见
2015/06/05 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
写作指导:怎么书写竞聘演讲稿?
2019/07/04 职场文书
导游词之天下银坑景区
2019/11/21 职场文书
用python删除文件夹中的重复图片(图片去重)
2021/05/12 Python
Mysql开启外网访问
2022/05/15 MySQL