php - 使用 http_build_query() 时编码的数组键

标签 php url parameters character-encoding

当数组键也是 html-char 代码时,使用 http_build_query() 将数组编码为 URL 会产生奇怪的行为。

例如:

return http_build_query([
   'id' = > ['my', 'data', 'here'], // no problem
   'class' = > ['my', 'data', 'here'], // no problem
   'yen' = > ['my', 'data', 'here'], // ¥ html car is ¥
   'parameter' = > ['my', 'data', 'here'], // ¶ html char is ¶
]);

编码后的结果是:

id[0]=my&id[1]=data&id[2]=here&class[0]=my&class[1]=data&class[2]=here¥[0]=my¥[1]=data¥ [2]=here¶meter[0]=my¶meter[1]=data¶meter[2]=here

这是怎么回事,我不可能不能将单词参数用作数组键。

最佳答案

如果查看 HTML 输出的源代码,您将看到

id%5B0%5D=my&id%5B1%5D=data&id%5B2%5D=here&class%5B0%5D=my&class%5B1%5D=data&class%5B2%5D=here&yen%5B0%5D=my&yen%5B1%5D=data&yen%5B2%5D=here&parameter%5B0%5D=my&parameter%5B1%5D=data&parameter%5B2%5D=here

这是正确的。仅显示时,浏览器会将格式错误的实体(如 ¥)解释为 ¥。服务器端无需担心。

HTML 实体 reference

演示: IDEOne

关于php - 使用 http_build_query() 时编码的数组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883351/

相关文章:

jsf - 使用 PrimeFaces onClick 提交参数?

Javascript 参数偏好

php - 如何使用 PHP 脚本只获取数据库的内容

php - 检查 Youtube 和 Vimeo 剪辑是否有效

android - Intent 打开 URL

ios - 如何使用 NSXMLParser 读取 URL(带有特殊字符)?

PHP 在第 31 个月的日期添加月份至今

php - 尝试将 jquery/ajax 实现到 html 页面中

javascript - HTML/javascript 中多个 URL 之间的切换

JavaScript - 似乎无法将 'reset' 数组传递给函数