为什么 PHP 会替换 .如果它是 $_GET 中的键,则带有下划线?

  • 本文关键字:下划线 GET PHP 替换 如果 php
  • 更新时间 :
  • 英文 :


可能重复:
PHP用下划线替换空格

示例:test.php?foo.bar=1

print_r($_GET);
// Array ( [foo_bar] => 1 ) 

这里引用了PHP手册

传入变量名称中的点

通常,PHP不会更改变量的名称传递到脚本中。但是,需要注意的是(句点,句号(不是PHP变量名中的有效字符。原因如下:

<?php $varname.ext;  /* invalid variable name */ ?> Now, what the

解析器看到一个名为$varname的变量,后面跟着字符串串联运算符,后面跟着空字符串(即未加引号与任何已知关键字或保留字不匹配的字符串('ext'。显然,这并没有达到预期的结果。因此需要注意的是,PHP将自动替换带下划线的传入变量名。

如果设置了register_globals指令,$_GET中的数组键必须用作变量名,php变量名中不允许使用点、空格以及其他各种字符。由于担心您有该指令集,php会替换那些"无效"字符

根据问题准确的PHP手册信息:

注意:变量名称中的点和空格将转换为下划线。例如,变为$_REQUEST["a_b"]。

来源:http://php.net/manual/en/language.variables.external.php

最新更新