本文实例讲述了Zend Framework校验器Zend_Validate用法。分享给大家供大家参考,具体如下:
引言:
是对输入内容进行检查,并生成一个布尔结果来表明内容是否被成功校验的机制。
如果isValid()方法返回False,子类的getMessage()方法将返回一个消息数组来解释校验失败的原因。
为了正确地返回消息与错误内容,对于isValid()方法的每次调用,都需要清除前一个isValid()方法调用所导致的消息和错误。
案例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php require_once 'Zend/Validate/EmailAddress.php' ; function c_email( $email ) { $validator = new Zend_Validate_EmailAddress(); if ( $validator ->isValid( $email )){ echo "输入的E-mail地址:" ; echo $email . "有效!<p>" ; } else { echo "输入的E-mail地址:" ; echo $email . "无效!" ; echo "失败消息为:<p>" ; foreach ( $validator ->getMessages() as $message ){ echo $message . "<p>" ; } foreach ( $validator ->getErrors() as $error ){ echo $error . "<p>" ; } } } $e_m1 = "abc@123.com" ; $e_m2 = "abc#123.com" ; c_email( $e_m1 ); c_email( $e_m2 ); |
结果:
输入的E-mail地址:abc@123.com有效!
输入的E-mail地址:abc#123.com无效!失败消息为:
'abc#123.com' is not a valid email address in the basic format local-part@hostname
emailAddressInvalidFormat
说明:
在引入类之后,定义一个验证函数,在函数中实例化类。用isValid()方法来进行验证,不同的子类验证器验证的内容是不一样的。
同时通过getMessages()方法和getErrors()方法来。
源码赏析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public function isValid( $value ) { if (! is_string ( $value )) { $this ->_error(self::INVALID); return false; } $matches = array (); $length = true; $this ->_setValue( $value ); // Split email address up and disallow '..' if (( strpos ( $value , '..' ) !== false) or (!preg_match( '/^(.+)@([^@]+)$/' , $value , $matches ))) { $this ->_error(self::INVALID_FORMAT); return false; } $this ->_localPart = $matches [1]; $this ->_hostname = $matches [2]; if (( strlen ( $this ->_localPart) > 64) || ( strlen ( $this ->_hostname) > 255)) { $length = false; $this ->_error(self::LENGTH_EXCEEDED); } // Match hostname part if ( $this ->_options[ 'domain' ]) { $hostname = $this ->_validateHostnamePart(); } $local = $this ->_validateLocalPart(); // If both parts valid, return true if ( $local && $length ) { if (( $this ->_options[ 'domain' ] && $hostname ) || ! $this ->_options[ 'domain' ]) { return true; } } return false; } |
解析:
这是主要的验证函数内容,分成了多种情况进行验证,有是否字符串,有是否符合邮箱规则,有长度是否符合,最终都符合才返回true。
希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。