gpt4 book ai didi

php - 什么时候使用 filter_input() 与 filter_var()?

转载 作者:可可西里 更新时间:2023-11-01 12:31:44 25 4
gpt4 key购买 nike

我传统上使用 filter_var() 函数来清理 $_GET$_POST 数据,例如:

 $foo =  filter_var($_GET['foo'], FILTER_SANITIZE_NUMBER_INT);

但是 PHP 还有一个函数 filter_input(),它有不同的语法来完成同样的事情:

$foo = filter_input(INPUT_GET, 'foo', FILTER_SANITIZE_NUMBER_INT);

这些只是同义词吗?使用一个比另一个有优势吗?

我已经检查了手册页,但我没有看到很大的不同(只是是否/如何报告错误)。语义/最佳实践,什么最有意义?

最佳答案

主要区别之一是它们处理 undefined variable /索引的方式。如果 $_GET['foo'] 不存在:

$foo = filter_var($_GET['foo'], FILTER_SANITIZE_NUMBER_INT);

返回空字符串 "" 并生成:

Notice: Undefined index: foo

因此您通常需要将其包装在 if(isset($_GET['foo'])) 中。

鉴于:

$foo = filter_input(INPUT_GET, 'foo', FILTER_SANITIZE_NUMBER_INT);

返回 NULL 并且不产生错误。

注意:filter_input 函数不对当前的$_GET$_POST 超全局变量进行操作,而是它是预先填充的并且独立于这些数组。

如果$_GET['foo']不存在但是在脚本中被创建,它不会被filter_input看到:

$_GET['foo'] = 1;
$foo = filter_input(INPUT_GET, 'foo', FILTER_SANITIZE_NUMBER_INT);

将返回null

关于php - 什么时候使用 filter_input() 与 filter_var()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40269990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com