这是PHP.net对其执行原因的解释:
传入变量名称中的点
通常,当将变量传递到脚本中时,PHP不会更改变量的名称。但是,应注意,点(句点,句号)不是PHP变量名称中的有效字符。由于这个原因,请看一下:
<?php$varname.ext; ?>现在,解析器看到的是一个名为$ varname的变量,其后是字符串连接运算符,其后是裸字符串(即与任何已知关键字或保留字都不匹配的未引用字符串)“
ext”。显然,这没有预期的结果。因此,必须注意,PHP会自动用下划线替换输入变量名称中的任何点。
那是来自http://ca.php.net/variables.external。
另外,根据此注释,这些其他字符也将转换为下划线:
以下是PHP转换为_(下划线)的字段名称字符的完整列表(不仅仅是点):
- chr(32)()(空格)
- chr(46)(。)(点)
- chr(91)([](方括号)
- chr(128)-chr(159)(多种)
因此,看起来好像您坚持使用它,因此您必须使用awnerd的建议将下划线转换回脚本中的点(不过我只是使用str_replace。)



