php 裡面 filter 函數是一個函數系列的統稱,filter 系列函數裡麵包括 filter_var 函數。filter 系列函數是 PHP 核心的組成部分。無需安裝即可使用這些函數。
他主要用於對來自非安全來源的資料(比如使用者輸入)進行驗證和過濾。而這裡面 filter_var() 函數則主要是通過指定的過濾器來過濾變數。
filter_has_var()檢查是否存在指定輸入類型的變數。
filter_id()返回指定過濾器的 識別碼。
filter_input()從指令碼外部擷取輸入,並進行過濾。
filter_input_array()從指令碼外部擷取多項輸入,並進行過濾。
filter_list()返回包含所有得到支援的過濾器的一個數組。
filter_var_array()擷取多項變數,並進行過濾。
filter_var()擷取一個變數,並進行過濾。
下面主要來看看 filter_var 函數的定義和用法。filter_var() 函數作用是通過指定的過濾器過濾變數。如果成功,則返回已過濾的資料,如果失敗,則返回 false。文法filter_var(variable, filter, options)參數 描述variable 必需。規定要過濾的變數。
filter 可選。規定要使用的過濾器的 ID。
options 規定包含標誌/選項的數組。檢查每個過濾器可能的標誌和選項。
至於使用什麼過濾器,可參見完整的 PHP Filter 參考手冊,查看可與該函數一同使用的過濾器:http://cn2.php.net/manual/zh/filter.filters.validate.php中文的解釋如下:
FiltersID 名稱及描述
FILTER_CALLBACK:調用使用者自訂函數來過濾資料。
FILTER_SANITIZE_STRING:去除標籤,去除或編碼特殊字元。
FILTER_SANITIZE_STRIPPED:"string" 過濾器的別名。
FILTER_SANITIZE_ENCODED:URL-encode 字串,去除或編碼特殊字元。
FILTER_SANITIZE_SPECIAL_CHARS:HTML 逸出字元 '"<>& 以及 ASCII 值小於 32 的字元。
FILTER_SANITIZE_EMAIL:刪除所有字元,除了字母、數字以及 !#$%&'*+-/=?^_`{|}~@.[]
FILTER_SANITIZE_URL:刪除所有字元,除了字母、數字以及 $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=
FILTER_SANITIZE_NUMBER_INT:刪除所有字元,除了數字和 +-
FILTER_SANITIZE_NUMBER_FLOAT:刪除所有字元,除了數字、+- 以及 .,eE。
FILTER_SANITIZE_MAGIC_QUOTES:應用 addslashes()。
FILTER_UNSAFE_RAW:不進行任何過濾,去除或編碼特殊字元。
FILTER_VALIDATE_INT:在指定的範圍以整數驗證值。
FILTER_VALIDATE_BOOLEAN:如果是 "1", "true", "on" 以及 "yes",則返回 true,如果是 "0", "false", "off", "no" 以及 "",則返回 false。否則返回 NULL。FILTER_VALIDATE_FLOAT:以浮點數驗證值。
FILTER_VALIDATE_REGEXP:根據 regexp,相容 Perl 的Regex來驗證值。
FILTER_VALIDATE_URL:把值作為 URL 來驗證。
FILTER_VALIDATE_EMAIL:把值作為 e-mail 來驗證。
FILTER_VALIDATE_IP:把值作為 IP 位址來驗證。
下面是一個使用驗證Email的過濾器的樣本:
//利用php filter_var 函數來檢驗電子郵件地址的正確性
if(!filter_var("someone@example....com",FILTER_VALIDATE_EMAIL)){
echo("不正確的Email");
}else{
echo("正確的Email");
}
以上結果將輸出:
不正確的Email