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

作者:袖梨 2022-06-24

早年使用php的时候还不知道有filter这玩意,那时候判断邮箱、url和ip地址格式是否符合都是用正则表达式。后来随着使用的逐渐深入,才知道在php中也可以使用内置的函数库filter来完成这些功能。

1、验证邮箱

先来看原始的正则验证

代码如下 复制代码

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

正则验证

代码如下 复制代码

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

filter_var函数

代码如下 复制代码

$url = "https://www.111cn.net";

$result = filter_var($url, FILTER_VALIDATE_URL);

var_dump($result); //string(22) "https://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

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手册。

相关文章

精彩推荐