簡體   English   中英

何時使用 filter_input() 與 filter_var()?

[英]When is filter_input() used versus filter_var()?

我傳統上使用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);

這些只是同義詞嗎? 使用一個比另一個有優勢嗎?

我檢查了手冊頁,但我沒有看到很多區別(僅報告是否/如何報告錯誤)。 語義/最佳實踐,什么最有意義?

主要區別之一是它們如何處理未定義的變量/索引。 如果$_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並且不會產生錯誤。

注意filter_input函數不對當前的$_GET$_POST超全局變量進行操作,而是預先填充並獨立於這些數組。

如果$_GET['foo']不存在但在腳本中創建,則filter_input將看不到它:

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

將返回null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM