php中filter函數驗證郵箱、url和ip地址的實例

在看這函數之前我驗證郵箱或IP地址及url都是使用正則表達式來處理,今天發現filter函數可以替換正則哦並且方法簡單好用,下面我用實例介紹這函數的用法吧。

早年使用php的時候還不知道有filter這玩意,那時候判斷郵箱、url和ip地址格式是否符合都是用正則表達式。後來隨着使用的逐漸深入,才知道在php中也可以使用內置的函數庫filter來完成這些功能。

1、驗證郵箱

先來看原始的正則驗證

 代碼如下 複製代碼

<?php
function isEmail($email){
 if(preg_match("/^[0-9a-zA-Z]+@(([0-9a-zA-Z]+)[.])+[a-z]{2,4}$/i",$email )) {
     return '郵箱驗證OK';
        } else {
 return '驗證不是郵箱';
 }
}
?>

再看filter這玩意

 代碼如下 複製代碼

$email = '[email protected]'; 

$result = filter_var($email, FILTER_VALIDATE_EMAIL); 

var_dump($result); //string(14) "[email protected]"

對於filter_var這個函數,如果驗證通過則會返回驗證對象,否則返回false。

感覺後者更簡單一些哦

2、驗證url地址

正則驗證

 代碼如下 複製代碼

<?php
$url = 'www.111cn.net';
$search = '/---正則N---/';
if(preg_match($search,$url)){
 echo '匹配';
}else {
 echo '不匹配';
}
?>

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地址

正則驗證函數

 代碼如下 複製代碼

/**
* 檢查IP地址是否正確。
*/
function checkipaddres ($ipaddres) {
$preg="/A((([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5])).){3}(([0-9]?[0-9])|(1[0-9]{2})|(2[0-4][0-9])|(25[0-5]))Z/";
if(preg_match($preg,$ipaddres))return true;
return false;
}


 

此函數驗證

 代碼如下 複製代碼

$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"

驗證數值是否爲整數,並且在一個整數區間內

 代碼如下 複製代碼


$i = '010'; 

$result = filter_var( 

     $i, 

     FILTER_VALIDATE_INT, 

     //設定校驗的數值範圍 

     array( 

      'options' => array('min_range' => 1, 'max_range' => 100) 

     ) 

 ); 

var_dump($result);//bool(false)

php的變量是弱類型,如果不用過濾器,直接使用大於小於符號判斷的話會是真的。

 代碼如下 複製代碼


 $i = '010'; 

$result = $i >= 1 && $i <= 100; 

 var_dump($result);//bool(true)

5、驗證浮點數

 代碼如下 複製代碼


$float = 12.312; 

$result = filter_var($float, FILTER_VALIDATE_FLOAT); 

var_dump($result); //float(12.312)

在做一些金額方面的驗證時,經常需要驗證金額是否爲浮點數。

總結

php中的filter過濾器雖然比較冷門,但是功能還是蠻強大的。除了上述這些功能外,還有一些過濾輸入的功能,可查閱php手冊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章