刚进入PHP Web开发。我有一个HTML表单,用户可以检查一系列动态生成的复选框,并通过POST提交。在PHP方面,我想检查点击了哪个复选框。
我有一个数组$ full_list,我正在做类似
的事情$selected_checkboxes = array_filter($full_list, function($item) {
array_key_exists($item, $_POST);
}
我在列出项目时遇到问题,例如“Peanut Butter”,因为在POST数组中它被命名为“Peanut_Butter”。
在检查array_key_exists之前,我当然可以用“_”str_replace“”,但我想这里有一个更基本的编码问题;具体来说,我不确定究竟是什么层将HTML Forms(value =“Peanut Butter”)中的普通字符串转换为“Peanut_Butter”。
所以:
答案 0 :(得分:3)
Byron Whitlock接受的回答是错误的。 PHP确实是这里的罪魁祸首。请参阅PHP manual:
变量名中的点和空格将转换为下划线。对于 示例
<input name="a.b" />
变为$_REQUEST["a_b"]
。
另请参阅this similar question的答案。
答案 1 :(得分:-1)
PHP不会这样做。客户端有一些东西将空格转换为下划线。
浏览器应使用等效的urlencode()对每个变量进行编码。 PHP将自动解码这些字符串,因此它对程序员来说是透明的。
修改的 javaScript中的等价物是escape()。但很可能有一些js代码手动将空格转换为下划线。