日期:2014-05-20  浏览次数:20773 次

ZendFramework学习第三章(核心组件—校验器之预定义校验器)

和过滤器类似,系统也预定义了一些校验器。如下表:


名称

效验内容

名称

效验内容

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);

运行结果:

输入的内容:北京在指定数组中!

输入的内容:重庆不在指定数组中!

输入的内容:台湾在指定数组中!



Regex正则表达式匹配校验器

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 就卡死,拔了两次电源, 好了今天先到这吧,正好该下班了。祝大家有个性福的夜晚。


                                                                                                                                                                 读书破万卷,下笔如有神。——杜甫