我有相当多的变量编码形式:
foo=bar&spam[eggs]=delicious&...
这些都在一个字符串中(例如,$ data =“foo = bar& spam [eggs] = delicious& ...”)。变量是任意深度嵌套的 - 很容易深入四或五级(“垃圾邮件[egg] [血腥] [vikings] =响亮”)。
有一个简单,可靠的方法来从中获取多维PHP数组吗?我假设PHP有一个解析器来执行此操作,但我不知道它是否暴露给我使用。理想情况下,我可以做类似的事情:
// given $data == "foo=bar&spam[eggs]=delicious"
$arr = some_magical_function( $data );
/* arr = Array
(
[foo] => bar
[spam] => Array
(
[eggs] => delicious
)
)
*/
答案 0 :(得分:5)
如果您的字符串采用URI参数格式,parse_str是您正在寻找的神奇功能。
答案 1 :(得分:3)
你可能想看看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
并且,您的输入:
$str = 'oo=bar&spam[eggs]=delicious&spam[eggs][bloody][vikings]=loud';
$output = array();
parse_str($str, $output);
var_dump($output);
你会得到这个:
array
'oo' => string 'bar' (length=3)
'spam' =>
array
'eggs' =>
array
'bloody' =>
array
'vikings' => string 'loud' (length=4)
哪个应该是你想要的; - )
(注意多级数组;以及第一个垃圾邮件[eggs]被第二个重写的事实,顺便说一句
答案 2 :(得分:1)
如果您的数据来自请求uri,请使用$_GET