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 相关文章推荐
深入PHP数据缓存的使用说明
May 10 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
PHP临时文件的安全性分析
Jul 04 PHP
php实现的双向队列类实例
Sep 24 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
php引用和拷贝的区别知识点总结
Sep 23 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
PHP7 其他语言层面的修改
Mar 09 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处理postfix邮件内容的方法
2015/06/16 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
深入理解PHP内核(二)之SAPI探究
2015/11/10 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
JavaScript窗口功能指南之在窗口中书写内容
2006/07/21 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
2014/06/05 Javascript
JQuery实现动态适时改变字体颜色的方法
2015/03/10 Javascript
如何提高数据访问速度
2016/12/26 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
Django自定义认证方式用法示例
2017/06/23 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
详解Django-restframework 之频率源码分析
2019/02/27 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Python实现播放和录制声音的功能
2020/08/12 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
HTML中使用SVG与SVG预定义形状元素介绍
2013/06/28 HTML / CSS
怎么处理XML的中文问题
2015/03/26 面试题
成人教育自我鉴定
2013/11/01 职场文书
大学生创业计划书的格式要求
2013/12/29 职场文书
集体备课反思
2014/02/12 职场文书
趣味运动会广播稿
2014/09/13 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
房屋维修申请报告
2015/05/18 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python