Answers:
您需要该parse_str
函数,并且需要设置第二个参数以将数据放入数组中,而不是放入单个变量中。
$get_string = "pg_id=2&parent_id=2&document&video";
parse_str($get_string, $get_array);
print_r($get_array);
?key=lorem&key=ipsum
像您仅key=ipsum
在URL上的查询字符串那样提供。而且我认为重用密钥并获得一致的结果或保留密钥的所有实例被认为是无效的。至少对于发送到PHP的查询字符串而言,有效的方法是?key[]=lorem&key[]=ipsum
,因此您的本地方法可能会查找&{x}=
x出现多次的任何实例, 并替换为x[]
(并将?等同于&)
?key[]=lorem&key[]=ipsum
。但是感谢您分享链接!
有时parse_str()
仅靠记号便能准确显示,例如:
$url = "somepage?id=123&lang=gr&size=300";
parse_str()将返回:
Array (
[somepage?id] => 123
[lang] => gr
[size] => 300
)
这将是更好地结合起来parse_str()
用parse_url()
,像这样:
$url = "somepage?id=123&lang=gr&size=300";
parse_str( parse_url( $url, PHP_URL_QUERY), $array );
print_r( $array );
$_SERVER['QUERY_STRING']
使用parse_str()
。
$str = 'pg_id=2&parent_id=2&document&video';
parse_str($str, $arr);
print_r($arr);
如果由于编码的与号而将查询字符串转换为数组时遇到问题
&
然后一定要使用 html_entity_decode
例:
// Input string //
$input = 'pg_id=2&parent_id=2&document&video';
// Parse //
parse_str(html_entity_decode($input), $out);
// Output of $out //
array(
'pg_id' => 2,
'parent_id' => 2,
'document' => ,
'video' =>
)
有几种可能的方法,但是对您来说,已经有一个内置parse_str
函数
$array = array();
parse_str($string, $array);
var_dump($array);
这是在mysql和mssql中拆分查询的PHP代码
enter code here
function splitquery($strquery)
{
$arrquery=explode('select',$strquery);
$stry='';$strx='';
for($i=0;$i<count($arrquery);$i++)
{
if($i==1)
{
echo 'select '.trim($arrquery[$i]);
}
elseif($i>1)
{
$strx=trim($arrquery[($i-1)]);
if(trim(substr($strx,-1))!='(')
{
$stry=$stry.'
select '.trim($arrquery[$i]);
}
else
{
$stry=$stry.trim('select '.trim($arrquery[$i]));
}
$strx='';
}
}
return $stry;
}
例:
从xx中选择xx,从xx中选择xx,(从xx中选择xx),其中y ='cc'从xx左连接中选择xx(选择xx),其中(从xxx中选择前1个xxx)由xxx desc进行;
从xx中选择xx
选择xx,(从xx中选择xx),其中y ='cc'
从xx左联接中选择xx(选择xx)其中(从xxx中选择前1个xxx)由xxx desc排序
谢谢来自印度尼西亚的Sentrapedagang.com
对于这个特定的问题,选择的答案是正确的,但是如果URL中存在冗余参数(例如多余的“ e”),则该函数将自动失败,而不会引发错误或异常:
a=2&b=2&c=5&d=4&e=1&e=2&e=3
所以我更喜欢这样使用自己的解析器:
//$_SERVER['QUERY_STRING'] = `a=2&b=2&c=5&d=4&e=100&e=200&e=300`
$url_qry_str = explode('&', $_SERVER['QUERY_STRING']);
//arrays that will hold the values from the url
$a_arr = $b_arr = $c_arr = $d_arr = $e_arr = array();
foreach( $url_qry_str as $param )
{
$var = explode('=', $param, 2);
if($var[0]=="a") $a_arr[]=$var[1];
if($var[0]=="b") $b_arr[]=$var[1];
if($var[0]=="c") $c_arr[]=$var[1];
if($var[0]=="d") $d_arr[]=$var[1];
if($var[0]=="e") $e_arr[]=$var[1];
}
var_dump($e_arr);
// will return :
//array(3) { [0]=> string(1) "100" [1]=> string(1) "200" [2]=> string(1) "300" }
现在,每个参数的所有出现都位于其自己的数组中,如果需要,您始终可以将它们合并到一个数组中。
希望有帮助!
?key=lorem&key=ipsum
将会导致array(["key"]=>"ipsum")
问题是,是否有获取s.th的函数。这样array(["key"]=>array("lorem", "ipsum"))
还是我必须自己创建此功能?