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 相关文章推荐
模仿OSO的论坛(五)
Oct 09 PHP
php Ajax乱码
Apr 09 PHP
apache mysql php 源码编译使用方法
May 03 PHP
深入php self与$this的详解
Jun 08 PHP
php计算当前程序执行时间示例
Apr 24 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
合格的PHP程序员必备技能
Nov 13 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
php session 写入数据库
Feb 13 PHP
利用PHP生成静态html页面的原理
Sep 30 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 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
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
php ci 获取表单中多个同名input元素值的代码
2016/03/25 PHP
CI框架简单邮件发送类实例
2016/05/18 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
2015/08/24 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
ES6正则表达式扩展笔记
2017/07/25 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
微信小程序模拟cookie的实现
2018/06/20 Javascript
微信小程序实现联动选择器
2019/02/15 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python中的闭包总结
2014/09/18 Python
详解Django通用视图中的函数包装
2015/07/21 Python
python 读写txt文件 json文件的实现方法
2016/10/22 Python
python3 shelve模块的详解
2017/07/08 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
树莓派采用socket方式文件传输(python)
2019/06/22 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
工程力学硕士生的自我评价范文
2013/11/16 职场文书
考试退步检讨书
2014/01/15 职场文书
售房协议书
2014/08/19 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
学生个人评语大全
2015/01/04 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
如何通过一篇文章了解Python中的生成器
2022/04/02 Python