早年使用php的時候還不知道有filter這玩意,那時候判斷郵箱、url和ip地址格式是否符合都是用正則表達式。後來隨着使用的逐漸深入,才知道在php中也可以使用內置的函數庫filter來完成這些功能。
1、驗證郵箱
先來看原始的正則驗證
代碼如下 | 複製代碼 |
<?php |
再看filter這玩意
代碼如下 | 複製代碼 |
$email = '[email protected]'; $result = filter_var($email, FILTER_VALIDATE_EMAIL); var_dump($result); //string(14) "[email protected]" |
對於filter_var這個函數,如果驗證通過則會返回驗證對象,否則返回false。
感覺後者更簡單一些哦
2、驗證url地址
正則驗證
代碼如下 | 複製代碼 |
<?php |
filter_var函數
代碼如下 | 複製代碼 |
$url = "http://www.111cn.net"; $result = filter_var($url, FILTER_VALIDATE_URL); var_dump($result); //string(22) "http://www.111cn.net" |
3、驗證ip地址
正則驗證函數
代碼如下 | 複製代碼 |
/**
|
此函數驗證
代碼如下 | 複製代碼 |
$url = "192.168.1.110"; $result = filter_var($url, FILTER_VALIDATE_IP); var_dump($result); //string(13) "192.168.1.110" |
值的一提的是,這方法也可以用來驗證ipv6。
代碼如下 | 複製代碼 |
$url = "2001:DB8:2de::e13"; $result = filter_var($url, FILTER_VALIDATE_IP); var_dump($result); //string(17) "2001:DB8:2de::e13" |
驗證數值是否爲整數,並且在一個整數區間內
代碼如下 | 複製代碼 |
$result = filter_var( $i, FILTER_VALIDATE_INT, //設定校驗的數值範圍 array( 'options' => array('min_range' => 1, 'max_range' => 100) ) ); var_dump($result);//bool(false) |
php的變量是弱類型,如果不用過濾器,直接使用大於小於符號判斷的話會是真的。
代碼如下 | 複製代碼 |
$result = $i >= 1 && $i <= 100; var_dump($result);//bool(true) |
5、驗證浮點數
代碼如下 | 複製代碼 |
$result = filter_var($float, FILTER_VALIDATE_FLOAT); var_dump($result); //float(12.312) |
在做一些金額方面的驗證時,經常需要驗證金額是否爲浮點數。
總結
php中的filter過濾器雖然比較冷門,但是功能還是蠻強大的。除了上述這些功能外,還有一些過濾輸入的功能,可查閱php手冊。