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

时间:2015-06-17 05:59:53

标签: 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

这里有什么,我不能使用word参数作为数组键。

1 个答案:

答案 0 :(得分:1)

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

  

ID%5B0%5D =我和ID%5B1%5D =数据和ID%5B2%5D =此处&安培;类%5B0%5D =我&安培;类%5B1%5D =数据&安培;类%5B2%5D =此处&安培;日元%5B0%5D =我&安培;日元%5B1%5D =数据&安培;日元%5B2%5D =此处&安培;参数%5B0%5D =我&安培;参数%5B1%5D =数据&安培;参数%5B2%5D =此处

哪个是对的。仅显示时,浏览器会将&yen等格式错误的实体解释为¥。服务器端没有什么可担心的。

HTML实体reference

演示: IDEOne