我正在做一些关于数据验证的练习,并决定弄乱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)
?
filter_input()
不会从_POST/_GET/_COOKIE/_SERVER/_ENV超全局数组中读取。它分别从这些值的原始来源读取(这些值也用于填充超全局变量)。
这是因为INPUT_POST
处理原始 POST 值,在脚本中修改它们不起作用。但是,如果要过滤该变量,可以使用:
filter_var($_POST['var'], FILTER_VALIDATE_FLOAT);
如果要设置默认输入值和筛选器,请使用 filter_var
。因为filter_input不会过滤超全局变量的当前值。