当数组键也是 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¥%5B0%5D=my¥%5B1%5D=data¥%5B2%5D=here¶meter%5B0%5D=my¶meter%5B1%5D=data¶meter%5B2%5D=here
这是正确的。仅显示时,浏览器会将格式错误的实体(如 ¥
)解释为 ¥。服务器端无需担心。
HTML 实体 reference
演示: IDEOne
关于php - 使用 http_build_query() 时编码的数组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883351/