有没有一个PHP函数可以将查询字符串转换为数组?

39

我基本上在寻找与http_build_query()相反的功能。

我有以下字符串:

foo=bar&bar[var]=foo

我希望以下内容可以作为参数传递到http_build_query函数中:

array(
    'foo' => 'bar',
    'bar' => array(
         'var' => 'foo',
    )
)
2个回答

95

您需要使用parse_str()函数。将一个数组作为第二个参数传递给它,它将从您提供的查询字符串中提取变量到该数组中:

<?php
$str = "first=value&arr[]=foo+bar&arr[]=baz";

parse_str($str, $output);

print_r($output);

/*
Array
(
    [first] => value
    [arr] => Array
        (
            [0] => foo bar
            [1] => baz
        )

)
*/

请注意,这是在http_build_query页面列出的第一个相关函数。


1
快速提示:从 PHP 7.2 开始,提供第二个参数(在本例中为 $output)是强制性的。 - haz

2
也许这个方法可行。自 PHP 7.2+ 起,parse_str 的第二个参数是必需的。请注意保留 HTML 标签。
parse_str(urldecode($builded_content), $output)

print_r($output)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接