标准校验类Zend Framework 带有一组标准的校验类供你使用。 Alnum
当且仅当 Alpha
当且仅当 Barcode
这个校验器是个带有条码类型的实例,条码类型是根据你希望用来校验条码值而定。它目前支持 " Between
当且仅当 Ccnum
当且仅当 日期
当 数字
当且仅当 Email 地址
基本用法 一个基本用法的例子如下: $validator = new Zend_Validate_EmailAddress(); if ($validator->isValid($email)) { // email appears to be valid } else { // email is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } } $email 并在匹配失败的时候用$validator->getMessages() 来获得有用的错误信息。
复杂的local parts
校验不同类型的主机名
Email地址中的主机名部分依靠 $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL); if ($validator->isValid($email)) { // email appears to be valid } else { // email is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } } 检查主机名是否确实接受email email地址的格式正确并不意味着这个email地址确实存在。为解决这个问题,你可以用MX校验来检查一个MX(email)条目的主机名是否存在于DNS的纪录里。这将告诉你这个主机名接受email,但并不告诉你确切的email地址是有效的。
MX 检查不是缺省地激活的,并且目前只支持UNIX平台。为激活MX检查,你可以传递第二个参数给 $validator = new Zend_Validate_EmailAddress(Zend_Validate_Hostname::ALLOW_DNS, true); true 或 false 给$validator->setValidateMx() 来激活或禁止 MX 校验。
用激活这个设置的网络函数将用来为你所想校验的email地址的主机名中的MX记录的存在做检查。请注意这将可能把你的脚本变慢。 校验国际域名
$validator->hostnameValidator->setValidateIdn(false); setValidateIdn() 更多的信息在Zend_Validate_Hostname 文档中。
请注意你有你允许DNS 主机名被校验,国际域名(IDNs)才被校验。 校验顶级域名
缺省地用已知的TLDs列表来检查主机名。你可以通过用存在于 $validator->hostnameValidator->setValidateTld(false); setValidateTld() 更多的信息在Zend_Validate_Hostname 文档中。
请注意你有你允许DNS 主机名被校验,顶级域名(TLDs)才被校验。 浮点数
当且仅当 GreaterThan
当且仅当 十六进制数
当且仅当 主机名Zend_Validate_Hostname允许你根据一组已知的规范来校验主机名。它检查三种不同的主机名:DNS主机名(例如domain.com),IP地址(例如1.2.3.4),和本地主机名(例如localhost)。缺省地,只有DNS主机名被匹配。 基本用法 一个基本用法的例子如下: <?php require_once 'Zend/Validate/Hostname.php'; $validator = new Zend_Validate_Hostname(); if ($validator->isValid($hostname)) { // hostname appears to be valid } else { // hostname is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } } $hostname 并在匹配失败的时候用$validator->getMessages() 来获得有用的错误信息。
校验不同类型的主机名 你可能发现你也想匹配IP地址,本地主机名,或者是所有允许类型的组合。这个可以在当你实例化它的时候通过传递参数给Zend_Validate_Hostname来实现。 参数应该是一个整型数,它来决定哪种主机名被允许。我们鼓励你使用常量。
Zend_Validate_Hostname 常量是: <?php require_once 'Zend/Validate/Hostname.php'; $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_IP); if ($validator->isValid($hostname)) { // hostname appears to be valid } else { // hostname is invalid; print the reasons foreach ($validator->getMessages() as $message) { echo "$message\n"; } }
你可以用这些类型的组合,也可以用 <?php $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS | Zend_Validate_Hostname::ALLOW_LOCAL);} 校验国际域名 一些国家代码顶级域名(ccTLDs),例如'de'(德国),在域名中支持国际字符。这些就是大家所知的国际域名(IDN)。这些域名可以用Zend_Validate_Hostname通过用于校验处理的扩展字符来匹配。 目前支持ccTLDs的有:
匹配IDN域名就像使用标准主机名校验器一样简单,因为IDN匹配是缺省激活的。如果你想禁止IDN校验,可以通过传递参数给Zend_validate_Hostname构造器或通过 你可以象下面通过传递第二个参数给Zend_Validate_Hostname构造器来禁止IDN校验。 <?php $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, false); $validator->setValidateIdn() 来激活或者禁止 IDN 校验。如果你试图匹配一个当前不被支持的IDN主机名,并且如果有国际字符在其中,校验很可能会失败。当指定附加字符的ccTLD文件在Zend/Validate/Hostname下不存在时,一个正常的主机名校验将被执行。(这就是在解释上句话中为什么校验会失败,Jason 注)
请注意只有当你允许DNS主机名被校验,IDNs才能被校验。 校验顶级域名 缺省地主机名通过已知的TLDs列表来检查。如果不需要这个功能,它可以被禁止,就像禁止IDN支持一样。你可以通过传递第三个参数给Zend_Validate_Hostname构造器来禁止TLD校验。在下面的例子中,我们通过第二个参数来支持IDN校验。 <?php $validator = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_DNS, true, false); $validator->setValidateTld() 来激活或禁止 TLD 校验。
请注意只有当你允许DNS主机名被校验,TLDs才能被校验。 InArray
当且仅当一个"needle" 整数
当且仅当 Ip
当且仅当 LessThan
当且仅当 NotEmpty
当且仅当 Regex
当且仅当 StringLength
当且仅当字串长度值
|