php动态添加url查询参数与获取url参数的方法汇总

发布时间:2020-10-24编辑:脚本学堂
本文介绍了php动态添加url查询参数的方法,php正则替换方式添加url查询参数,并提供了php获取url参数的多个方法,供大家学习参考。

一、php动态添加url查询参数

动态为url添加key-value查询参数,如果参数已存在则会用新的覆盖。

例子:
 

复制代码 代码示例:
function add_querystring_var($url, $key, $value) {
 $url=preg_replace('/(.*)(?|&)'.$key.'=[^&]+?(&)(.*)/i','$1$2$4',$url.'&');
 $url=substr($url,0,-1);
 if(strpos($url,'?') === false){
  return ($url.'?'.$key.'='.$value);
 } else {
  return ($url.'&'.$key.'='.$value);
 }
}

二、php获取url参数方法总结

php获取url参数方法,利用parse_url()函数解析URL。

在php中获取url中参数的方法有很多种,直接使用parse_url函数,可以很方便快速的自动解析url参数与值并保存期到对应的数组中,其它的一种方法基本都是正则表达式来操作了。

1、parse_url函数

说明:
mixed parse_url ( string $url [, int $component = -1 ] )
本函数解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。
本函数不是用来验证给定 URL 的合法性的,只是将其分解为下面列出的部分。不完整的 URL 也被接受, parse_url() 会尝试尽量正确地将其解析。
要解析的 URL。无效字符将使用 _ 来替换。

例子:
 

复制代码 代码示例:
<?php
$url = "http://www.jb200.com/welcome/";
$parts = parse_url($url);
print_r($parts);
array
(
    [scheme] => http
    [host] => www.jb51.net
    [path] => /welcome/
)

自己实现的算法,如下:
 

复制代码 代码示例:
function getParams()
{
   $url = '/index.php?_p=index&_a=show&x=12&y=23';
   $refer_url = parse_url($url);
   $params = $refer_url['query'];
  
   $arr = array();
   if(!empty($params))
   {
       $paramsArr = explode('&',$params);
       foreach($paramsArr as $k=>$v)
       {
          $a = explode('=',$v);
          $arr[$a[0]] = $a[1];
       }
   }
   return $arr;
}

调用方法:
 

$arr = getParams();
print_r($arr);

运行结果:
Array ( [_p] => index [_a] => show [x] => 12 [y] => 23 )

三、PHP URL参数获取方式的四个例子

PHP URL参数获取方式的四种例子,php url参数解析的4种方法。

在已知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
        )
)
*/
?>