Я играл с cURL, и я пытаюсь отправить массив через переменные POST. Я решил использовать http_build_query для передачи строки, как ожидалось:
curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($sendParams));
Я получаю конец просто print_r
'в $ _POST, поэтому я могу видеть, что отправляется.
Тем не менее, я получаю амперсанд, прикрепленный ко всем родительским элементам после первого, это нормально? Я предполагаю, что parse_str используется cURL при анализе запроса, так что здесь приведен пример упрощенного примера, который также приводит к амперсандам:
<?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
, прежде чем html_entity_decode
.