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公用函数列表[正则]
Feb 22 PHP
php 文件上传系统手记
Oct 26 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
Jul 08 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
详解php中反射的应用
Mar 15 PHP
php+MySql实现登录系统与输出浏览者信息功能
Jul 01 PHP
Yii2中关联查询简单用法示例
Aug 10 PHP
Yii2下session跨域名共存的解决方案
Feb 04 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
Apr 04 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 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
php使用websocket示例详解
2014/03/12 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
JS实现图片放大镜效果的方法
2015/02/27 Javascript
javascript十六进制及二进制转化的方法
2015/05/06 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
详解堆的javascript实现方法
2016/11/29 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
angular中的cookie读写方法
2017/08/02 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python实现简单字典树的方法
2016/04/29 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
Python远程linux执行命令实现
2020/11/11 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
阿迪达斯比利时官方商城:adidas比利时
2016/10/10 全球购物
马来西亚综合购物网站:Lazada马来西亚
2018/06/05 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
应届生简历中的自我评价
2014/01/13 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
目标责任书格式
2014/07/28 职场文书
大专护理专业自荐信
2015/03/25 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
合作合同协议书
2016/03/21 职场文书
详解如何修改nginx的默认端口
2021/03/31 Servers
Mysql数据库命令大全
2021/05/26 MySQL
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫