代码之家  ›  专栏  ›  技术社区  ›  geowa4

将字符串编码为post数组的精确规则/php函数是什么?

  •  1
  • geowa4  · 技术社区  · 15 年前

    只需进入PHP Web开发。我有一个HTML表单,用户在其中检查一些动态生成的复选框系列,并通过post提交。在PHP方面,我想检查单击了哪些复选框。

    我有一个数组$full_列表,正在做类似的事情

    $selected_checkboxes = array_filter($full_list, function($item) {
        array_key_exists($item, $_POST);
      }
    

    当一个列表项被命名时,我会遇到一些问题,例如“花生酱”,因为在post数组中它被命名为“花生酱”。

    在检查数组键存在之前,我当然可以用“u”替换“”,但我认为这里存在一个更基本的编码问题;具体来说,我不确定究竟是什么层将HTML形式的普通字符串(value=“peanut butter”)转换为“peanut butter”。

    所以:

    • 哪个层负责此转换?是浏览器吗?
    • 准确的转换规则是什么,有没有一个PHP函数可以复制准确的转换?
    2 回复  |  直到 15 年前
        1
  •  -1
  •   Byron Whitlock    15 年前

    PHP不会这样做。客户端上有一些东西正在将空格转换为下划线。

    浏览器应该使用等价的 urlencode() . PHP将自动解码这些字符串,以便对程序员透明。

    编辑 javascript中的等效项是 escape() . 但很可能有一些JS代码手动将空格转换为下划线。

        2
  •  3
  •   Community CDub    8 年前

    拜伦·惠特洛克接受的回答是错误的。PHP确实是这里的罪魁祸首。见 PHP manual :

    变量名中的点和空格转换为下划线。为了 例子 <input name="a.b" /> 变成 $_REQUEST["a_b"] .

    另请参阅以下答案: this similar question .

    推荐文章