我想做mysite.com/?query="q1=1&q2=2&q3=3"
我已经尝试了$_GET['query']
,但它显示了query = q1
答案 0 :(得分:2)
如果您需要生成包含数组参数的网址,可以使用http_build_query
示例:
$params = http_build_query(array(
"query" => array(
"value1",
"value2",
"value3"
),
"another_param" => "hello"
));
echo $params;
上面的例子将输出查询%5B0%5D = value1& query%5B1%5D = value2& query%5B2%5D = value3& another_param = hello
(请注意http_build_query
为您完成所有编码工作)
您可以在链接中?之后使用这些参数:
echo "<a href='http://mywebsite.com/?$params'>link</a>"
然后您可以从$_GET
if(isset($_GET['query']) && is_array($_GET['query'])){
foreach($_GET['query'] as $query){
//Do something with $query value
}
}
答案 1 :(得分:0)
您需要转义/ urlencode &
,因为它将其视为下一个查询字符串参数。
答案 2 :(得分:0)
Url对您在查询参数中传递的字符串进行编码,如:
?query=%22q1%3D1%26q2%3D2%26q3%3D3%22
$s = $_GET['query'];
parse_str(trim($s,'"'), $output);
print_r($output);
输出是:
Array ( [q1] => 1 [q2] => 2 [q3] => 3 )
答案 3 :(得分:0)
使用其他分隔符会更容易,例如可以使用逗号
test.php?query=q1,q2,q3
$parameters = explode(',', $_GET['query']);
如果您需要这些参数来获取值,为什么不使用json?但是你必须首先(或者至少应该)对你的json对象进行urlencode
test.php?query={"q1":1,"q2":2,"q3":3} // raw json
test.php?query=%7B%22q1%22%3A1%2C%22q2%22%3A2%2C%22q3%22%3A3%7D //encoded json
$parameters = json_decode( urldecode($_GET['query']) );
要对参数进行编码,只需使用json_encode和urlencode
即可$array = array( "q1" => 1, "q2" => 2, "q3" => 3 );
$parameters = urlencode( json_encode($array) );