/*在编程当中获取$_GET参数的时候有时间会有多个键名重复的值,当然这也许是程序员所需要的,故意利用后一个键
名和覆盖前一个键名,从而达到自己的目的,但在接收query参数的时候,我们有时间不想看到重复的键值对,
所以我写了个函数解决这问题,希望大家指正,当然如果有更好更简单的办法,也请大家写一下*/
$str = "name=张三&sex=男&name=李白";function formatQuery($query)
{
$array = array();
$query = explode("&",$query);
foreach($query as $val)
{
$k = substr($val,0,strpos($val,"="));
if($k)
{
$array[$k] = $val;
}
elseif($val)
{
$array[$val] = "{$val}=";
}
}
return implode("&",$array);
}
echo formatQuery($str);
我用strpos查找的是=号不是中文啊?您能举一个反例子,让我的函数出错吧?
不好意思,别见怪,我是真心想学习的。
<?php
$str = 'name=张三&sex=男&name=李白';// 这个数据应该encode否则当value内包含&会出问题的。
function parseStr ($str){
$list = explode('&',$str);
$list = array_reverse($list);
if (false){ // a
return implode('&',$list);
}else{ // b
$str = implode('&',$list);
parse_str($str,$list);
return http_build_query($list);
}
}
var_export(parseStr($str));
?>
你解析以下的查询字符串看一下吧$str = 'name=&张三&sex=男&name=李白';// 这个数据应该encode否则当value内包含&会出问题的。