PHP 第44章 http_build_query出现¬ PHP 第44章 http_build_query出现¬

2025-05-29

一、问题

关联数组中某一元素的键名为 notify_url,使用 http_build_query() 后输出结果跟预期不一致,如下:

$data = array(
   'version' => '10',
   'notify_url' => 'http://www.demo.com/notify',
   'create_time' => time()
);
echo http_build_query($data);

输出结果:

version=10¬ify_url=http%3A%2F%2Fwww.demo.com%2Fnotify&create_time=1635924906

可以看到 ¬ 变成了 ¬,原因是 ¬ 被浏览器解释为 HTML 实体,尽管它缺少后缀分号。

二、解决

2.1、方法一

需要把 ¬ 转换成 ¬,PHP 的 htmlentities() 函数可以将特殊字符转换为 HTML 实体

$data = array(
   'version' => '10',
   'notify_url' => 'http://www.demo.com/notify',
   'create_time' => time()
);
$str = http_build_query($data);

echo htmlentities($str);

2.2、方法二

$str = "";
foreach ($arr as $k => $v) {
   $str .= $k . "=" .$v . "&";
}
$str = htmlspecialchars_decode($str);

2.3、方法三

$str = http_build_query($param, null, '&');
$str = htmlspecialchars_decode($str);
阅读 40

PHP文章

带到手机上看