PHP過濾器包含兩種類型
Validation:用來驗證驗證項是否合法
Sanitization:用來格式化被驗證的項目,因此它可能會修改驗證項的值,將不合法的字元刪除等。
input_filters_list()函數用來列出當前系統所支援的所有過濾器。
1
2
| Filter Name |
Filter ID |
3 $filter)5 {6 echo '
| '.$filter.' |
'.filter_id($filter).' |
'."\n";7 }8 ?>9
以上代碼會輸出如下資訊
Filter Name Filter ID
int 257
boolean 258
float 259
validate_regexp 272
validate_url 273
validate_email 274
validate_ip 275
string 513
stripped 513
encoded 514
special_chars 515
unsafe_raw 516
email 517
url 518
number_int 519
number_float 520
magic_quotes 521
callback 1024
每個過濾器都會擁有一個獨自的ID。這裡的每個過濾器都能夠被filter_var()函數使用。下面將會逐個介紹其使用方法。注意 ,上面的string和strippedID相同,這是因為他們是同一個過濾器,或者說是同一個過濾器的兩個別名罷了。
過濾資料
使用filter_var()方法對資料進行過濾,下面是一個簡單的過濾例子
1
上面代碼將會資料一個整數型的1234,因為$int變數通過的整數類型的驗證,這次更換一下$int變數的內容
1
此時在運行代碼,發現沒有任何變數輸出,這是因為$in變數沒有通過驗證,因此這個方法返回bool(false)。同時也需要注意 一下,即使$int='',也會返回bool(false)
整數驗證
上面的幾段代碼簡單的驗證了一個給定值是否為整數的例子。其實FILTER_VALIDATE_INT也提供了數值範圍的驗證,下面我們 來驗證一個變數,判斷它是否為整數型,並驗證它的值是否在50到100之間
1 $min, "max_range"=>$max));11 //4212 ?>
運行上面的代碼,發現42被輸出來了,並沒有發現任何錯誤,這是為什麼啊?原來想要向驗證中添加附加驗證規則時候,需要傳遞一個含有'options'鍵的數組,向下面這樣:
1 array("min_range"=>$min, "max_range"=>$max)));11 12 ?>
運行上面的代碼,頁面不會有任何輸出,因為上面返回了false,說明驗證成功。使用該方法也可以對負數進行範圍驗證同時這種方式也支援單範圍取值,即只是指定一個最大值或者最小值的範圍,如
array('min_range'=>$min)));//12?>
上述代碼會驗證$int是否是大於(不包括等於)$min的整數類型的值,運行代碼,輸出12
上面的這些例子只是簡單的對單個值進行驗證,那麼如果對一組變數進行驗證呢?答案是使用filter_var_array()。該函數可以同時驗證多個不同類型的資料。這裡先做一個簡單的例子
1 $value)11 {12 echo $key.' -- '.$value.'
';13 }14 ?>
運行上述代碼,輸出如下
0 -- 10
1 -- 109
2 --
3 -- -1234
4 --
5 --
6 -- Array
FILTER_VALIDATE_INT過濾器同時支援八進位和十六進位,這兩種flags是
FILTER_FLAG_ALLOW_HEX
FILTER_FLAG_ALLOW_OCTAL
利用數組傳遞flags
1 FILTER_FLAG_ALLOW_HEX));8 //2559 ?>
PHP技術交流群 170855791