$params = [
'a' => 'x',
'b' => 'y'
];
$url = http_build_query(['params' => $params]);
echo urldecode($url);
我期待这个结果:
params[a]=x¶ms[b]=y
但我得到的却是:
params[a]=x¶ms[b]=y
我也尝试过:
http_build_query(['params' => $params], '', '&');
http_build_query(['params' => $params], null, '&', PHP_QUERY_RFC3986);
http_build_query(['params' => $params], null, ini_get('arg_separator.output'), PHP_QUERY_RFC3986);
以及:
$params = [
'params[a]' => 'x',
'params[b]' => 'y'
];
但我总是得到同样的结果。我做错什么了吗?是我的服务器吗?
遵循@Sammitch的建议:
var_dump($url, bin2hex($url), urldecode($url), bin2hex(urldecode($url)));
输出:
string(31) "params%5Ba%5D=x¶ms%5Bb%5D=y"
string(62) "706172616d73253542612535443d7826706172616d73253542622535443d79"
string(23) "params[a]=x¶ms[b]=y"
string(46) "706172616d735b615d3d7826706172616d735b625d3d79"