在PHP中,我需要一个函数来将URL中的查询字符串转换成PHP关联数组:http://example.com?key1=value1&key2=value2
。
我已经接受了这段代码。它有效,但我发现它有点冗长。 (并且PHP内置了所有功能:我很惊讶我没有找到任何开箱即用的东西,类似于array ['key1' => 'value1', 'key2' => 'value2']
的反面。)
你能建议一个更好的方法吗?
http_build_query
答案 0 :(得分:53)
您只能使用parse_url()
从网址获取属性一旦你有了,你可以使用parse_str()将它们转换为变量,它也适用于多维数组!
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str, $output);
echo $output['first']; // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz
答案 1 :(得分:1)
如果你的意思是你所写的,那么它非常简单,并且不需要任何其他东西,PHP中有一个预定义的超全局变量$_GET
,它本身将所有查询字符串表示为键,值对关联阵列。
示例:
// current page URI: http://localhost/test.php?key1=value1&key2=value2
echo '<pre>';
print_r($_GET);
echo '</pre>';
结果:
Array(
[key1] = value1
[key2] = value2
)
有关$_GET
PHP superglobal goto:http://php.net/manual/en/reserved.variables.get.php
答案 2 :(得分:0)
$url = 'http://example.com?key1=value1&key2=value2&key3=value3';
preg_match_all('/\w+=.*/',$url,$matches);
parse_str($matches[0][0], $output);
print_r($output);
答案 3 :(得分:-1)
foreach ($_GET as $key => $value) $arr["$key"]= $value;
答案 4 :(得分:-2)
尝试使用parse_url