Php 如何在一个参数中传递多个参数

Php 如何在一个参数中传递多个参数,php,Php,我想做一些类似于mysite.com/?query=“q1=1&q2=2&q3=3” 我尝试了$\u GET['query'],但它显示query=q1您需要对&进行转义/urlcode编码,因为它将其视为下一个查询字符串参数 您需要对&进行转义/urlencode,因为它将其视为下一个查询字符串参数 Url对在查询参数内传递的字符串进行编码,如下所示: ?查询=%22q1%3D1%26q2%3D2%26q3%3D3%22 $s = $_GET['query']; parse_str(trim(

我想做一些类似于
mysite.com/?query=“q1=1&q2=2&q3=3”


我尝试了
$\u GET['query']
,但它显示query=q1

您需要对
&
进行转义/urlcode编码,因为它将其视为下一个查询字符串参数

您需要对
&
进行转义/urlencode,因为它将其视为下一个查询字符串参数

Url对在查询参数内传递的字符串进行编码,如下所示:
?查询=%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 ) 

Url对在查询参数内传递的字符串进行编码,如下所示:
?查询=%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 ) 

如果需要使用数组参数生成url,可以使用
http\u build\u query

例如:

$params = http_build_query(array(
    "query" => array(
        "value1",
        "value2",
        "value3"
    ),
    "another_param" => "hello"
));
echo $params;
上面的示例将输出查询%5B0%5D=value1和查询%5B1%5D=value2和查询%5B2%5D=value3和另一个参数=hello

(请注意,
http\u build\u query
为您完成所有编码工作)

您将能够在链接中的之后使用这些参数:

echo "<a href='http://mywebsite.com/?$params'>link</a>"

如果需要使用数组参数生成url,可以使用
http\u build\u query

例如:

$params = http_build_query(array(
    "query" => array(
        "value1",
        "value2",
        "value3"
    ),
    "another_param" => "hello"
));
echo $params;
上面的示例将输出查询%5B0%5D=value1和查询%5B1%5D=value2和查询%5B2%5D=value3和另一个参数=hello

(请注意,
http\u build\u query
为您完成所有编码工作)

您将能够在链接中的之后使用这些参数:

echo "<a href='http://mywebsite.com/?$params'>link</a>"

使用另一个分隔符会更容易,例如可以使用逗号

test.php?query=q1,q2,q3
$parameters = explode(',', $_GET['query']);
如果您需要这些参数有一个值,为什么不使用json呢?但您必须(或至少应该)首先对json对象进行URL编码

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) );

使用另一个分隔符会更容易,例如可以使用逗号

test.php?query=q1,q2,q3
$parameters = explode(',', $_GET['query']);
如果您需要这些参数有一个值,为什么不使用json呢?但您必须(或至少应该)首先对json对象进行URL编码

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) );

您可以使用
&
以外的内容作为参数分隔符。将它们作为数组传递,如
query[1]=1&query[2]=2&……
,这样您的
$\u就可以得到['query']
将具有阵列您必须正确地对
&
字符进行URL编码-这样做的正确方式将是
?查询=%22q1%3D1%26q2%3D2%26q3%3D3%22
您将要做什么?您应该在问题中提供输入和预期输出。很难猜到你想做什么。您想要3个参数还是1个包含3个元素的数组的参数?您可以使用
&
以外的内容作为参数分隔符。将它们作为数组传递,如
query[1]=1&query[2]=2&……
,这样您的
$\u就可以得到['query']
将具有阵列您必须正确地对
&
字符进行URL编码-这样做的正确方式将是
?查询=%22q1%3D1%26q2%3D2%26q3%3D3%22
您将要做什么?您应该在问题中提供输入和预期输出。很难猜到你想做什么。您想要3个参数还是1个包含3个元素的数组的参数?您可以通过提供编码查询参数的代码来改进此答案。虽然输出很有趣,但重要的部分是如何得到编码的参数。您可以通过提供编码查询参数的代码来改进这个答案。虽然输出很有趣,但重要的部分是如何得到编码的参数。您是如何做到的?不清楚。如果您想强调escape和urlencode的PHP功能,可以将其格式化为代码示例。您是如何做到的?不清楚。如果您想强调escape和urlencode的PHP功能,可以将其格式化为代码示例。