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生成excel时单元格内换行问题的解决方法
Aug 26 PHP
php中文乱码怎么办如何让浏览器自动识别utf-8
Jan 15 PHP
php使用glob函数快速查询指定目录文件的方法
Nov 15 PHP
php实现获取文件mime类型的方法
Feb 11 PHP
php从数组中随机选择若干不重复元素的方法
Mar 14 PHP
php编写批量生成不重复的卡号密码代码
May 14 PHP
php强制用户转向www域名的方法
Jun 19 PHP
PHP 返回13位时间戳的实现代码
May 13 PHP
详解Laravel视图间共享数据与视图Composer
Aug 04 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 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 参数过滤、数据过滤详解
2015/10/26 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
js继承 Base类的源码解析
2008/12/30 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
Js组件的一些写法
2010/09/10 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
jQuery实现的移动端图片缩放功能组件示例
2020/05/01 jQuery
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python实现一个服务器监听多个客户端请求
2018/04/12 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
pygame实现俄罗斯方块游戏(基础篇2)
2019/10/29 Python
基于python实现地址和经纬度转换
2020/05/19 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
11月升旗仪式讲话稿
2014/02/15 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
二手房买卖协议书
2014/04/10 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
八年级英语教学反思
2016/02/15 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书