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 相关文章推荐
xml+php动态载入与分页
Oct 09 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
php自动获取目录下的模板的代码
Aug 08 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
php搜索文件程序分享
Oct 30 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
Aug 02 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 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下删除一篇文章生成的多个静态页面
2010/08/08 PHP
PHP删除目录及目录下所有文件的方法详解
2013/06/06 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
laravel 之 Eloquent 模型修改器和序列化示例
2019/10/17 PHP
js 深拷贝函数
2008/12/04 Javascript
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
Vue.js学习之计算属性
2017/01/22 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
浅入深出Vue之自动化路由
2019/08/06 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
[01:02:02]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第二局
2016/02/25 DOTA
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
在python的类中动态添加属性与生成对象
2016/09/17 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
H&M美国官网:欧洲最大的服饰零售商
2016/09/07 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
团结就是力量演讲稿
2014/05/21 职场文书
环境卫生标语
2015/08/03 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python