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 = 'sjlinyu@qq.com'; $result = filter_var($email, FILTER_VALIDATE_EMAIL); var_dump($result); //string(14) "sjlinyu@qq.com"
对于filter_var这个函数,如果验证通过则会返回验证对象,否则返回false。
感觉后者更简单一些哦
2、验证url地址
正则验证
<?php $url = 'www.phprm.com'; $search = '/---正则N---/'; if (preg_match($search, $url)) { echo '匹配'; } else { echo '不匹配'; } ?>
filter_var函数
<?php $url = "http://www.phprm.com"; $result = filter_var($url, FILTER_VALIDATE_URL); var_dump($result); //string(22) "http://www.phprm.com" ?>
3、验证ip地址
正则验证函数
<?php /** * 检查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; } ?>
此函数验证
<?php $url = "192.168.1.110"; $result = filter_var($url, FILTER_VALIDATE_IP); var_dump($result); //string(13) "192.168.1.110" ?>
值的一提的是,这方法也可以用来验证ipv6。
<?php $url = "2001:DB8:2de::e13"; $result = filter_var($url, FILTER_VALIDATE_IP); var_dump($result); //string(17) "2001:DB8:2de::e13" ?>
验证数值是否为整数,并且在一个整数区间内
<?php $i = '010'; $result = filter_var($i, FILTER_VALIDATE_INT, //设定校验的数值范围 array( 'options' => array( 'min_range' => 1, 'max_range' => 100 ) )); var_dump($result); //bool(false) ?>
php的变量是弱类型,如果不用过滤器,直接使用大于小于符号判断的话会是真的。
<?php $i = '010'; $result = $i >= 1 && $i <= 100; var_dump($result); //bool(true) ?>
5、验证浮点数
<?php $float = 12.312; $result = filter_var($float, FILTER_VALIDATE_FLOAT); var_dump($result); //float(12.312) ?>
在做一些金额方面的验证时,经常需要验证金额是否为浮点数。
总结
php中的filter过滤器虽然比较冷门,但是功能还是蛮强大的。除了上述这些功能外,还有一些过滤输入的功能,可查阅php手册。
文章链接:http://www.phprm.com/develop/57194.html
随便收藏,请保留本文地址!