parse_str在元素之前加上&符号?

时间:2011-08-24 16:00:01

标签: php

我一直在玩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 ) ) 

1 个答案:

答案 0 :(得分:7)

似乎已经回答了我自己的问题... parse_str被&amp;混淆了,我需要首先运行html_entity_decode,然后再解析查询字符串。