Parse_str在元素前加上&符号


parse_str prepending ampersand to elements?

我一直在玩cURL,并试图通过POST变量发送数组。我决定使用http_build_query按预期传递字符串:

curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($sendParams));

我让接收端简单地print_r ' s $_POST,这样我就可以看到通过它发送的是什么。

然而,我得到一个&号附加到所有的父元素第一个,这是正常的吗?我假设cURL在解析querystring时使用parse_str,因此这里是一个超级简化的示例,它也导致了&符号:

<?php
    $array = array('foo', array('bar' => array('baz' => array(1,2,3))), 'test' => array(2,3,4));
    parse_str(http_build_query($array), $vars);
    print_r($vars);
?>

的回报:

Array ( [0] => foo [amp;1] => Array ( [bar] => Array ( [baz] => Array ( [0] => 1 [1] => 2 [2] => 3 ) ) ) [amp;test] => Array ( [0] => 2 [1] => 3 [2] => 4 ) ) 

似乎已经回答了我自己的问题…parse_str被&混淆了,在解析查询字符串之前,我需要先运行html_entity_decode