我正在进行一些有关数据验证的练习,并决定使用filter_input()
函数。当我尝试运行此代码时:
$_POST['var'] = 10;
$filtered = filter_input(INPUT_POST, 'var', FILTER_VALIDATE_FLOAT);
var_dump($filtered);
var_dump($filtered)
返回NULL。我知道如果通过提交表单为$_POST['var']
分配值,代码可以正常工作,但我只是想知道为什么手动为$_POST[]
数组赋值不会返回float(10)
?< / p>
答案 0 :(得分:11)
filter_input()
无法读取_POST / _GET / _COOKIE / _SERVER / _ENV超全局数组。它分别从这些值的原始来源读取(也用于填充超全球)。
答案 1 :(得分:4)
这是因为INPUT_POST
适用于原始POST值,脚本中对它们的修改无效。
但是,如果要过滤该变量,可以使用:
filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
答案 2 :(得分:1)
如果要设置默认输入值并过滤,请使用filter_var
。因为filter_input不会过滤超全球的当前值。