Zend_Validate_Email允许你校验一个email地址。首先校验器把email地址分成local-part和@hostname并试图按照email地址和主机名的规范来匹配它。
基本用法
一个基本用法的例子如下:
<?php require_once 'Zend/Validate/EmailAddress.php'; $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地址$email
并在匹配失败的时候用$validator->getMessages()
来获得有用的错误信息。
复杂的local parts
Zend_Validate_Email根据RFC2822l来匹配任何有效的email地址。例如,有效的email地址包括bob@domain.com
, bob+jones@domain.us
, "bob@jones"@domain.com
和 "bob jones"@domain.com
。一些过时的email格式目前不再校验(例如email地址中的回车符或"\"符)。
校验不同类型的主机名
Email地址中的主机名部分依靠Zend_Validate_Hostname来校验。尽管你希望IP地址和本地主机名也被接受,但缺省地只有像domain.com
格式的DNS主机名被接受。
当然如果你想如愿,需要实例化Zend_Validate_EmailAddress并传递一个参数来指明哪种主机名你想接受。更多的细节包含在Zend_Validate_Hostname中。
下面的例子显示如何同时接受DNS和本地主机名:
<?php require_once 'Zend/Validate/EmailAddress.php'; $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"; } }