我一直在玩cURL,并试图通过POST变量发送一个数组。我决定使用http_build_query按预期传递字符串:
curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($sendParams));
我接收端只是print_r
'$ _POST,所以我可以看到发送的是什么。
但是,在第一个后,我得到一个附加到所有父元素的&符号,这是正常的吗?我假设解析查询字符串时cURL使用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 ) )
答案 0 :(得分:7)
似乎已经回答了我自己的问题... parse_str
被&amp;混淆了,我需要首先运行html_entity_decode
,然后再解析查询字符串。