PHP 过滤器(Filter)
簡(jiǎn)介
PHP 過(guò)濾器用于驗(yàn)證和過(guò)濾來(lái)自非安全來(lái)源的數(shù)據(jù)。驗(yàn)證和過(guò)濾用戶輸入或自定義數(shù)據(jù)是任何 Web 應(yīng)用程序的重要組成部分。設(shè)計(jì) PHP 的過(guò)濾器擴(kuò)展的目的是使數(shù)據(jù)過(guò)濾更輕松快捷。
由于大部分Web應(yīng)用程序都依賴于外部數(shù)據(jù)的輸入,這些數(shù)據(jù)的來(lái)源包括:
- 來(lái)自表單的輸入數(shù)據(jù)
- Cookies
- 服務(wù)器變量
- 數(shù)據(jù)庫(kù)查詢結(jié)果
通過(guò)使用過(guò)濾器,您能夠確保應(yīng)有程序獲得正確的輸入類型。
過(guò)濾函數(shù)
對(duì)于需要過(guò)濾的變量,使用下列函數(shù):
| filter_has_var() | 檢查是否存在指定輸入類型的變量。 | 5 |
| filter_id() | 返回指定過(guò)濾器的 ID 號(hào)。 | 5 |
| filter_input() | 從腳本外部獲取輸入,并進(jìn)行過(guò)濾。 | 5 |
| filter_input_array() | 從腳本外部獲取多項(xiàng)輸入,并進(jìn)行過(guò)濾。 | 5 |
| filter_list() | 返回包含所有得到支持的過(guò)濾器的一個(gè)數(shù)組。 | 5 |
| filter_var_array() | 獲取多項(xiàng)變量,并進(jìn)行過(guò)濾。 | 5 |
| filter_var() | 獲取一個(gè)變量,并進(jìn)行過(guò)濾。 | 5 |
PHP:指示支持該函數(shù)的最早的 PHP 版本。
過(guò)濾器
FILTER_CALLBACK
調(diào)用用戶自定義函數(shù)來(lái)過(guò)濾數(shù)據(jù)。把自定義的函數(shù)作為一個(gè)過(guò)濾器來(lái)使用。這樣,就擁有了數(shù)據(jù)過(guò)濾的完全控制權(quán)。指定的函數(shù)必須存入名為 “options” 的關(guān)聯(lián)數(shù)組中。
注意:既可以創(chuàng)建自己的自定義函數(shù),也可以使用已有的 PHP 函數(shù)。規(guī)定準(zhǔn)備用到過(guò)濾器函數(shù)的方法,與規(guī)定選項(xiàng)的方法相同。
在下面的例子中,使用了一個(gè)自定義的函數(shù)把所有 “_“ 轉(zhuǎn)換為空格:
| 1 2 3 4 5 6 7 8 | <?php function convertSpace($string) { return str_replace("_", " ", $string); } $string = "Peter_is_a_great_guy!"; echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace")); ?> // 結(jié)果:Peter is a great guy! |
validating過(guò)濾器
作用:
- 用于驗(yàn)證用戶輸入。
- 嚴(yán)格的格式規(guī)則。(比如 URL 或 E-Mail 驗(yàn)證)
- 如果成功則返回預(yù)期的類型,失敗則返回 false。
效果:Validation 用于校驗(yàn)數(shù)據(jù)。例如,在filter_var($variable)中傳入FILTER_VALIDATE_EMAIL,會(huì)校驗(yàn)$variable是否為合法的email地址。
返回結(jié)果:校驗(yàn)通過(guò)返回?cái)?shù)據(jù),校驗(yàn)失敗返回false。
| 1 2 3 4 5 6 7 8 | <?php $var=300; $int_options = array("options"=> array("min_range"=>0, "max_range"=>256)); var_dump(filter_var($var, FILTER_VALIDATE_INT, $int_options)); ?> |
sanitizing過(guò)濾器
作用:
- 用于允許或禁止字符串中指定的字符。
- 無(wú)數(shù)據(jù)格式規(guī)則。
- 始終返回字符串。
效果:Sanitization 用于修正數(shù)據(jù),不校驗(yàn)數(shù)據(jù)。例如,在filter_var($variable)中傳入FILTER_SANITIZE_EMAIL,$variable變量中不符合email地址規(guī)則的字符將會(huì)被修剪。
返回結(jié)果:返回修正后的數(shù)據(jù),無(wú)論修正是否起作用。
示例:
| 1 2 3 4 | <?php $url="http://www.w3school.com.cn"; var_dump(filter_var($url,FILTER_SANITIZE_ENCODED)); ?> |
總結(jié)
以上是生活随笔為你收集整理的PHP 过滤器(Filter)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如果人民币贬值,对股市会有什么影响?
- 下一篇: 重仓农业股的基金