如何将URL参数列表字符串分解为配对[key] => [值]数组?

时间:2012-01-28 15:10:58

标签: php url parameters explode

  

可能重复:
  Parse query string into an array

如何分解字符串,例如:

a=1&b=2&c=3

这样就变成了:

Array {
 [a] => 1
 [b] => 2
 [c] => 3
}

使用explode()分隔的常规&功能会分隔参数,但不会分隔[key] => [value]对。

感谢。

3 个答案:

答案 0 :(得分:18)

使用PHP的parse_str函数。

$str = 'a=1&b=2&c=3';
$exploded = array();
parse_str($str, $exploded);
$exploded['a']; // 1

我想知道你从哪里得到这个字符串?如果它是问号后面的URL的一部分(URL的查询字符串),您可以通过超全局$_GET数组访问它:

# in script requested with http://example.com/script.php?a=1&b=2&c=3
$_GET['a']; // 1
var_dump($_GET); // array(3) { ['a'] => string(1) '1', ['b'] => string(1) '2', ['c'] => string(1) '3' )

答案 1 :(得分:2)

尝试使用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

答案 2 :(得分:-1)

这样的东西会起作用

$str = "a=1&b=2&c=3"
$array = array();
$elems = explode("&", $str);
foreach($elems as $elem){
    $items = explode("=", $elem);
    $array[$items[0]] = $items[1];
}