为了账号安全,请及时绑定邮箱和手机立即绑定

通过ajax将json对象传给php后台,为什么json字符.会被自动替换为_

通过ajax将json对象传给php后台,为什么json字符.会被自动替换为_

PHP
繁花如伊 2019-03-16 10:06:11
打印后台返回的信息 有什么办法能够保留字符“dl.is_distribution”吗
查看完整描述

4 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

命名不规范吧

查看完整回答
反对 回复 2019-03-18
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

你得看看TP里面I函数是怎么处理的.

查看完整回答
反对 回复 2019-03-18
?
慕容3067478

TA贡献1773条经验 获得超3个赞

官方文档有说明这个现象:

变量名中的点和空格被转换成下划线。例如 <input name="a.b" /> 变成了 $_REQUEST["a_b"]

原因是:

通常,PHP 不会改变传递给脚本中的变量名。然而应该注意到点(句号)不是 PHP 变量名中的合法字符。

<?php $varname.ext;  /* 非法变量名 */ ?> 

这时,解析器看到是一个名为 $varname
的变量,后面跟着一个字符串连接运算符,后面跟着一个裸字符串(即没有加引号的字符串,且不匹配任何已知的健名或保留字)'ext'。很明显这不是想要的结果。
出于此原因,要注意 PHP 将会自动将变量名中的点替换成下划线。

其实不止点,下面的都会被处理

chr(32) ( ) (space)
chr(46) (.) (dot)
chr(91) ([) (open square bracket)
chr(128) - chr(159) (various)

PHP 对于 web 环境做了很多处理,这些只是冰山一角,希望能给楼主和大家带来帮助。

顺便说下,用点分隔变量名,是不是不太符合工程命名规范?驼峰、下划线都可以呀。

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信