如果我通过 $_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>";
…输出以下内容:
url is /SpShipTool/php/testGetUrl.php?x.y=a.b
x.y is .
x_y is a.b.
…我的问题是:有 什么 办法可以阻止它吗?我这辈子都想不通我做了什么才配得上这个
我运行的 PHP 版本是 5.2.4-2ubuntu5.3。
原文由 Dave Carpeneto 发布,翻译遵循 CC BY-SA 4.0 许可协议
以下是 PHP.net 对其原因的解释:
这是来自 http://ca.php.net/variables.external 。
此外,根据 此评论,这些其他字符将转换为下划线:
所以看起来你坚持下去了,所以你必须使用 dawnerd 的建议 将下划线转换回脚本中的点(不过我只是使用 str_replace 。)