一、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
)
)
*/
?>