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转成EXE文件
Oct 09 PHP
很实用的一个完整email发送程序
Oct 09 PHP
JS实现php的伪分页
May 25 PHP
自动把纯文本转换成Web页面的php代码
Aug 27 PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
php实现按文件名搜索文件的远程文件查找器
May 10 PHP
php判断文件上传图片格式的实例详解
Sep 30 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
使用Rancher在K8S上部署高性能PHP应用程序的教程
Jul 10 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
也谈截取首页新闻 - 范例
2006/10/09 PHP
PHP伪造referer实例代码
2008/09/20 PHP
解析PHP正则提取或替换img标记属性
2013/06/26 PHP
Yii操作数据库的3种方法
2014/03/11 PHP
iOS10推送通知开发教程
2016/09/19 PHP
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
JS在Chrome浏览器中showModalDialog函数返回值为undefined的解决方法
2016/08/03 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
微信小程序时间选择插件使用详解
2018/12/28 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
django 自定义用户user模型的三种方法
2014/11/18 Python
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
Python 函数基础知识汇总
2018/03/09 Python
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
Python 实现Serial 与STM32J进行串口通讯
2019/12/18 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
澳洲小众品牌的集合网站:BNKR
2018/02/23 全球购物
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
车间副主任岗位职责
2013/12/24 职场文书
公司总经理岗位职责
2014/03/15 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
迎新春趣味活动方案
2014/08/24 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
先进集体申报材料
2014/12/25 职场文书
八月一日观后感
2015/06/10 职场文书
初中生物教学反思
2016/02/20 职场文书
Vue+Element UI实现概要小弹窗的全过程
2021/05/30 Vue.js
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python