微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – POST变量名中字符的限制

我最近惊讶地发现,PHP自动且不可避免地将所有句点转换为POST字段名称中的下划线,因为PHP中的变量名称中不允许使用句点.

我有POST数据,其中键入了包含任意数据的名称,我正在考虑使用Base64编码POST名称以避免期间问题.但是,Base64字母包含字符,/和=.变量名中也不允许使用这些字母,但这些字符对于POST名称是否正常? PHP将如何处理它们?

解决方法:

变量名中不允许使用以下字符:

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

(引用次数Get PHP to stop replacing ‘.’ characters in $_GET or $_POST arrays?)

对于其他人来说,/和=对于$_POST和变量名都很好.

首先,如果您确定$_POST中的所有下划线都应该是句点(这可能是也可能不是公平的假设,但……)

<form name=test>
<input type=text name="+./=" value='hello'>
<input type=submit>

<?PHP
foreach ($_POST as $key=>$postvar)
{
$newKey=str_replace("_",".",$key);
$newPost[$newKey]=$postvar;
}
$_POST=$newPost;
echo $_POST['+./=']; //hello

在变量名称中,您可以使用Variable variables

${'var+./='}=1;
echo ++${'var+./='}; //2
?>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐