Как уже упоминалось в моем другом ответе, эта функция исправляет это неудачное поведение.
function fix(&$target, $source, $discard = true) {
if ($discard)
$target = array();
$source = preg_replace_callback(
'/(^|(?<=&))[^=[&]+/',
function($key) { return bin2hex(urldecode($key[0])); },
$source
);
parse_str($source, $post);
foreach($post as $key => $val)
$target[ hex2bin($key) ] = $val;
}
И затем вы можете вызвать эту функцию так: