我传统上使用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);
这些只是同义词吗?使用一个优于另一个是否有优势?
我已检查过手册页,但我没有看到很多区别(只是报告错误是否/如何报告)。语义/最佳实践,最有意义的是什么?
答案 0 :(得分:11)
其中一个主要区别是它们如何处理未定义的变量/索引。如果$_GET['foo']
不存在:
$foo = filter_var($_GET['foo'], FILTER_SANITIZE_NUMBER_INT);
返回空字符串""
并生成:
注意:未定义的索引:foo
因此,您通常需要将其包装在if(isset($_GET['foo']))
。
鉴于:
$foo = filter_input(INPUT_GET, 'foo', FILTER_SANITIZE_NUMBER_INT);
返回NULL
并且不会生成错误。