PHP 中值进行验证是很方便的,主要是用 filter_var 这个函数,第一个参数表示要验证的内容,第二个参数表示要进行怎样的验证,第三个参数为可选参数,表示验证所需的额外信息。
if (filter_var("http://www.itpow.com/", FILTER_VALIDATE_URL))
{
echo "是 URL 格式。", "<br>";
}
else
{
echo "不是 URL 格式。", "<br>";
}
第二个参数的常用值有:
- FILTER_VALIDATE_INT 在指定的范围以整数验证值。
- FILTER_VALIDATE_BOOLEAN 如果是 "1", "true", "on" 以及 "yes",则返回 true,如果是 "0", "false", "off", "no" 以及 "",则返回 false。否则返回 NULL。
- FILTER_VALIDATE_FLOAT 以浮点数验证值。
- FILTER_VALIDATE_URL 把值作为 URL 来验证。
- FILTER_VALIDATE_EMAIL 把值作为 e-mail 来验证。
- FILTER_VALIDATE_IP 把值作为 IP 地址来验证。
- FILTER_VALIDATE_REGEXP 根据 regexp,兼容 Perl 的正则表达式来验证值。
- FILTER_CALLBACK 调用用户自定义函数来过滤数据。
验证指定范围内的 Int
if (filter_var("3.3", FILTER_VALIDATE_INT, array("options"=>array("min_range"=>0, "max_range"=>256))))
{
echo "是指定范围内的 Int。", "<br>";
}
else
{
echo "不是 Int 格式,或不在指定范围内。", "<br>";
}
验证正则表达式
if (filter_var("ABCDEFGHI", FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-z]{8,}$/i"))))
{
echo "正则表达式验证通过。", "<br>";
}
else
{
echo "正则表达式验证未通过。", "<br>";
}
正则表达式后面跟了个 i,表示忽略大小写。
自定义验证
function check($m)
{
if ($m > 0)
{
return true;
}
return false;
}
if (filter_var(-3, FILTER_CALLBACK, array("options"=>"check")))
{
echo "自定义验证通过。", "<br>";
}
else
{
echo "自定义验证未通过。", "<br>";
}