$ _POST空格以下划线转换

时间:2013-06-13 16:32:37

标签: php post

我有一个HTML下拉菜单,看起来像这样

<select name='not working random test!'>
<option value='0'>Select quantity:</option>
<option value='1'>1 room</option>
<option value='2'>2 rooms</option>
</select>

甚至有可能,如果我是var_dumping $ _POST,我会看到类似的内容吗?

["not_working_random_test!"]=>
string(1) "1"

这引起了我的引擎的一些麻烦:我希望我为select指定的名称是相同的。为什么不发生这种情况?

1 个答案:

答案 0 :(得分:23)

这是标准的PHP行为。来自documentation

  

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


PHP转换为_(下划线)的字段名称字符的完整列表如下(不仅仅是点):

  • chr(32)(空格)
  • chr(46).(点)
  • chr(91)[(方括号)
  • chr(128) - chr(159)(各种)

如果两者存在一个打开和一个右方括号,它们不会被转换,但$ _POST元素将成为一个数组元素。

<input name='hor[se'>
<input name='hor[se]'>

将成为:

$_POST['hor_se'];
$_POST['hor']['se'];

:: Reference