将 $_GET 请求转换为字符串时遇到了一个非常奇怪的问题。 (PHP 5.2.17)
这是来自 print_r() 的数组问题区域的一小部分:
_GET (array)
...
[address_country_code] => GB
[address_name] => Super Mario
[notify_version] => 3.7
...
使用 _GET 数据有两种情况:
案例1):保存后使用:
// Script1.php
$data = json_encode($_GET);
# > Save to MySQL Database ($data)
// Script2.php (For Viewing & Testing URL later)
# > Load from Database ($result)
echo http_build_query(json_decoded($result,true));
上述数组片段的结果:(正确的输出)
address_country_code=GB&address_name=Super+Mario¬ify_version=3.7
案例 2):在与案例 1) 相同的脚本中使用,就在案例 1) 中保存之前:
// Script1.php
echo http_build_query($_GET);
结果:(不正确的输出)
address_country_code=GB&address_name=Super+Mario¬ify_version=3.7
在情况 2 中如何将几个字符输出为 ¬ 但情况 1 很好!这让我发疯:(
我也尝试过在 foreach 循环的键和值中使用 urlencode() 生成 url 的自定义函数,而不是使用 http_build_query,这只是导致在我的一个测试用例中将 ¬ 更改为 %C2%AC!