将查询字符串转换为关联数组

时间:2011-11-30 10:41:13

标签: php query-string

在PHP中,我需要一个函数来将URL中的查询字符串转换成PHP关联数组:http://example.com?key1=value1&key2=value2

我已经接受了这段代码。它有效,但我发现它有点冗长。 (并且PHP内置了所有功能:我很惊讶我没有找到任何开箱即用的东西,类似于array ['key1' => 'value1', 'key2' => 'value2']的反面。)

你能建议一个更好的方法吗?

http_build_query

5 个答案:

答案 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