此代码:
$query = array(
"var" => "no",
"not_var" => "yes",
"var2" => "maybe"
);
print http_build_query($query);
输出:
var=no¬_var=yes&var2=maybe
这发生在运行PHP 5.3.19的我自己的机器上。我在PHPfiddle上重现了这种行为。它在运行PHP 5.2.11的ideone.com上按预期工作。
为什么会这样?
答案 0 :(得分:8)
这只是因为您的浏览器对¬
实体进行了编码,请尝试以下方法:
print htmlentities(http_build_query($query));
对于正常使用,它绝对没问题。
ideone
与PHPFiddle
之间的差异是因为PHPFiddle
只是将结果转储到iframe中,而ideone
正在显示实体前编码,以便其他显示器没有坏掉。
答案 1 :(得分:2)
您是否对结果做了“查看源”,或者您是否依赖浏览器来显示它?
实际上,它正在按预期输出字符串;是错误地解释它的浏览器。
该字符串包含¬
。浏览器将其解释为HTML实体,尽管它缺少尾随分号。
如果您查看来源,您会看到输出实际上是正确的。
解决方案:如果您希望此字符串包含在HTML页面中,您也应该对其进行htmlencode。