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生成WAP页面
Oct 09 PHP
php 缩略图实现函数代码
Jun 23 PHP
php去除重复字的实现代码
Sep 16 PHP
ThinkPHP分页类使用详解
Mar 05 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
Jul 04 PHP
Laravel 5框架学习之向视图传送数据
Apr 08 PHP
Java中final关键字详解
Aug 10 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
Jul 21 PHP
PHP 配置后台登录以及模板引入
Jan 24 PHP
PHP parse_ini_file函数的应用与扩展操作示例
Jan 07 PHP
一次因composer错误使用引发的问题与解决
Mar 06 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
Apr 26 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
BBS(php &amp; mysql)完整版(五)
2006/10/09 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
js中哈希表的几种用法总结
2014/01/28 Javascript
css+js实现部分区域高亮可编辑遮罩层
2014/03/04 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
Javascript 高性能之递归,迭代,查表法详解及实例
2017/01/08 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
初学者AngularJS的环境搭建过程
2017/10/27 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
js中offset,client , scroll 三大元素知识点总结
2019/09/11 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
跟老齐学Python之折腾一下目录
2014/10/24 Python
详解用Python处理HTML转义字符的5种方式
2017/12/27 Python
Python语言进阶知识点总结
2019/05/28 Python
使用python去除图片白色像素的实例
2019/12/12 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
如何利用python检测图片是否包含二维码
2020/10/15 Python
纯CSS3实现自定义Tooltip边框涂鸦风格的教程
2014/11/05 HTML / CSS
HTML5新标签兼容——&gt; 的两种方法
2018/09/12 HTML / CSS
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
村官学习十八大感想
2014/01/15 职场文书
办理居住证介绍信
2014/01/15 职场文书
医学生求职自荐书
2014/06/12 职场文书
食品安全主题班会
2015/08/13 职场文书
2015年幼儿园师德师风建设工作总结
2015/10/23 职场文书
话题作文之成长
2019/12/09 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python