如果我.通过$ _GET PHP在其名称中传递PHP变量,则自动用_字符替换它们.例如:
<?php
echo "url is ".$_SERVER['REQUEST_URI']."<p>";
echo "x.y is ".$_GET['x.y'].".<p>";
echo "x_y is ".$_GET['x_y'].".<p>";
Run Code Online (Sandbox Code Playgroud)
...输出以下内容:
url is /SpShipTool/php/testGetUrl.php?x.y=a.b
x.y is .
x_y is a.b.
Run Code Online (Sandbox Code Playgroud)
......我的问题是这样的:有什么方法可以阻止它吗?不能为我的生活弄清楚我做了什么值得这样做
我运行的PHP版本是5.2.4-2ubuntu5.3.
在PHP文档中,我发现了以下部分:
变量名中的点和空格将转换为下划线.例如
<input name="a.b" />变成$_REQUEST["a_b"].
我知道,虽然PHP不能让变量$a.b的register_globals,但这种解释并不令我完全满意.虽然确实register_globals会这样做(或者,即使因为没有${'a.b'}),但是为什么它会影响全局变量,比如$_GET技术上你必须从开始就给出字符串(所以PHP程序员不能忘记有关${'a.b'}的东西)的情况$_GET).
为什么它只影响点和空间?虽然我可以理解点(<input type=image>),为什么它会影响空间.连字符怎么样?
可能重复:
PHP用空格替换空格
示例:test.php?foo.bar = 1
print_r($_GET);
// Array ( [foo_bar] => 1 )
Run Code Online (Sandbox Code Playgroud)