php http传参数,http - PHP的URL传参数(英文句号变成了下划线)的问题,求解释。...

GET参数里面的.号(英文的句号)会变成_(英文的下划线)。

我仔细分析了这个问题,发现确实是这样。

bVqDKV

在线测试地址:

http://moonlordapi.sinaapp.com/test.php?.=1

(不信你自己测。)

所以我现在的问题是……

1.为什么会这样?对于这个问题,有没有什么官方的解释或者说明?

2.还有没有其它的特殊符号会出现这样奇葩的现象?

————————————————————华丽的分割线————————————————————

UPDATE:

已采纳答案。

不过看了下http://php.net/manual/en/language.variables.external.php,那条说明是7年前的了。。。

自己实测了一下(这里的PHP版本是5.4+):

bVqD0k

空格和左中括号的参数会被忽略(和说明不同)。

chr(128) - chr(159)都不是常见的文本字符了,就不测试了。。。

回复内容:

GET参数里面的.号(英文的句号)会变成_(英文的下划线)。

我仔细分析了这个问题,发现确实是这样。

bVqDKV

在线测试地址:

http://moonlordapi.sinaapp.com/test.php?.=1

(不信你自己测。)

所以我现在的问题是……

1.为什么会这样?对于这个问题,有没有什么官方的解释或者说明?

2.还有没有其它的特殊符号会出现这样奇葩的现象?

————————————————————华丽的分割线————————————————————

UPDATE:

已采纳答案。

不过看了下http://php.net/manual/en/language.variables.external.php,那条说明是7年前的了。。。

自己实测了一下(这里的PHP版本是5.4+):

bVqD0k

空格和左中括号的参数会被忽略(和说明不同)。

chr(128) - chr(159)都不是常见的文本字符了,就不测试了。。。

在 PHP 中,变量名称中不能使用句号点(.)。 例如 $a.b 是一个不合法的变量名。因此,PHP 会自动将点替换为下划线。

除了点,一些其他字符如果出现在GET参数名中,也将会被自动替换为下划线。会被自动替换的字符列表:

chr(32) ( ) (空格)

chr(46) (.) (点)

chr(91) ([) (中括号)

chr(128) - chr(159) (多个字符)

参考资料:http://php.net/manual/en/language.variables.external.php

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值