Heim >php教程 >php手册 >php中filter函数验证邮箱、url和ip地址的实例

php中filter函数验证邮箱、url和ip地址的实例

WBOY
WBOYOriginal
2016-06-02 09:13:371079Durchsuche

在看这函数之前我验证邮箱或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 &#39;邮箱验证OK&#39;; 
    } else { 
        return &#39;验证不是邮箱&#39;; 
    } 
}

再看filter这玩意,代码如下:

$email = &#39;sjlinyu@qq.com&#39;;  
$result = filter_var($email, FILTER_VALIDATE_EMAIL);  
var_dump($result); //string(14) "sjlinyu@qq.com"

对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false,感觉后者更简单一些.

2、验证url地址,正则验证,代码如下:

<?php 
$url = &#39;www.phprm.com&#39;; 
$search = &#39;/---正则N---/&#39;; 
if(preg_match($search,$url)){ 
    echo &#39;匹配&#39;; 
}else { 
    echo &#39;不匹配&#39;; 
}

filter_var函数,代码如下:

$url = "http://www.phprm.com";  
$result = filter_var($url, FILTER_VALIDATE_URL);  
var_dump($result); //string(22) "http://www.phprm.com"

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"

4、验证数值是否为整数,并且在一个整数区间内,代码如下:

$i = &#39;010&#39;;  
$result = filter_var(  
     $i,  
     FILTER_VALIDATE_INT,  
     //设定校验的数值范围  
     array(  
      &#39;options&#39; => array(&#39;min_range&#39; => 1, &#39;max_range&#39; => 100)  
     )  
 );  
var_dump($result);//bool(false)

php的变量是弱类型,如果不用过滤器,直接使用大于小于符号判断的话会是真的,代码如下:

$i = &#39;010&#39;;  
$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手册.


本文链接:

收藏随意^^请保留教程地址.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn