日期:2014-05-20 浏览次数:20945 次
和过滤器类似,系统也预定义了一些校验器。如下表:
| 
 名称  | 
 效验内容  | 
 名称  | 
 效验内容  | 
| 
 Alnum  | 
 内容是否为字母或者数字组合  | 
 Hex  | 
 数值是否为十六进制  | 
| 
 Apha  | 
 内容是否为纯字母组合  | 
 Hostname  | 
 主机名是否正确  | 
| 
 Between  | 
 数值是否位于指定的两个值之间  | 
 InArray  | 
 内容是否存在于指定数组中  | 
| 
 Ccnum  | 
 数值是否为十进制数  | 
 Int  | 
 数值是否为整数  | 
| 
 Date  | 
 日期格式是否正确  | 
 Ip  | 
 Ip地址是否有效  | 
| 
 Digits  | 
 内容是否为数值  | 
 LessThan  | 
 数值是否比指定值小  | 
| 
 EmailAddress  | 
 E-mail地址是否正确  | 
 NotEmpty  | 
 内容是否不为空  | 
| 
 Float  | 
 数值是否为浮点数  | 
 Regex  | 
 是否匹配给定的正则表达式  | 
| 
 GreaterThan  | 
 数值是否比指定值大  | 
 StringLength  | 
 字符串长度是否在某个区间  | 
下边依照上边的表,举例说一些系统预定义校验器的使用。
Date日期校验器
使用校验器我就不阐述了,下边直接举例说明吧:
        function c_date($date)
        {
            $validator=new Zend_Validate_Date();
            if ($validator->isValid($date))
            {
                echo "输入的格式:";
                echo $date."有效!<p>";
            }
            else
            {
                echo "输入的格式:";
                echo $date."无效!<p>"; 
            }
        }
        $date1="2008-02-22";
        $date2="02-25-2005";
        $date3="2008-02-58";
        c_date($date1);
        c_date($date2);
        c_date($date3);
        
结果:
输入的格式:2008-02-22有效!
输入的格式:02-25-2005无效!
输入的格式:2008-02-58无效!
Hostname主机地址校验器
使用Zend_Validate_Hostname校验器还可以对给定的主机地址是否正确进行检测,返回布尔值。举例:
        function c_hostname($h_n)
        {
            $validator=new Zend_Validate_Hostname();
            if ($validator->isValid($h_n))
            {
                echo "输入的主机地址:";
                echo $h_n."有效!<p>";
            }
            else
            {
                echo "输入的主机地址:";
                echo $h_n."无效!<p>"; 
            }
        }
$host1="framework.zend.com";
$host2="microsoft";
$host3="127.0.0.1";
        c_hostname($host1);
        c_hostname($host2);
        c_hostname($host3);
运行结果:
输入的主机地址:framework.zend.com有效!
输入的主机地址:microsoft无效!
输入的主机地址:127.0.0.1无效!
InArray数组包含校验器
使用Zend_Validate_InArray校验器可以对指定的内容是否包含在指定的数组中进行检测。
        function c_inarray($n)
        {
            $temp=array("北京","上海","台湾","钓鱼岛");  //就拿中国领土举例吧!
 
            $validator=new Zend_Validate_InArray($temp);
            if ($validator->isValid($n))
            {
                echo "输入的内容:";
                echo $n."在指定数组中!<p>";
            }
            else
            {
                echo "输入的内容:";
                echo $n."不在指定数组中!<p>";
            }
        }
        $China1="北京";
        $China2="重庆";
        $China3="台湾";
        c_inarray($China1);
        c_inarray($China2);
        c_inarray($China3);
运行结果:
输入的内容:北京在指定数组中!
输入的内容:重庆不在指定数组中!
输入的内容:台湾在指定数组中!
Zend_Validate_Regex是一类较为特殊的校验器,该校验器可以使用正则表达式(是定义一个用来搜索匹配字符串模式的特殊字符串)作为效验规则。通过使用证则表达式,再加上合理使用本校验器,几乎可以实现所有的效验规则。在初始化对象是需要以正则表达式字符串为参数。符合规则返回true,否则返回false。举例:
        function c_rege($v)
        {
            $pattern=array("/ab{2,}/"); //该正则表示以字母a开头后边后面跟着2到多个b
            
        
            
            if (Zend_Validate::is($v, 'Regex',$pattern))
            {
                echo "输入的内容:";
                echo $v."符合正则规则!<p>";
            }
            else
            {
                echo "输入的内容:";
                echo $v."不符合正则规则!<p>";
            }
        }
        
        $regex1="ab";
        $regex2="abb";
        $regex3="abbb";
        c_rege($regex1);
        c_rege($regex2);
        c_rege($regex3);
运行结果:
输入的内容:ab不符合正则规则!
输入的内容:abb符合正则规则!
输入的内容:abbb符合正则规则!
这篇文章写出来真心不容易,公司电脑卡的要死,一开Zend Studio 就卡死,拔了两次电源, 好了今天先到这吧,正好该下班了。祝大家有个性福的夜晚。
                                                                                                                                                                 读书破万卷,下笔如有神。——杜甫