2 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
5 * Email validation rule
9 * LICENSE: This source file is subject to version 3.01 of the PHP license
10 * that is available through the world-wide-web at the following URI:
11 * http://www.php.net/license/3_01.txt If you did not receive a copy of
12 * the PHP License and are unable to obtain it through the web, please
13 * send a note to license@php.net so we can mail you a copy immediately.
16 * @package HTML_QuickForm
17 * @author Bertrand Mansion <bmansion@mamasam.com>
18 * @copyright 2001-2011 The PHP Group
19 * @license http://www.php.net/license/3_01.txt PHP License 3.01
21 * @link http://pear.php.net/package/HTML_QuickForm
25 * Abstract base class for QuickForm validation rules
27 require_once 'HTML/QuickForm/Rule.php';
30 * Email validation rule
33 * @package HTML_QuickForm
34 * @author Bertrand Mansion <bmansion@mamasam.com>
35 * @version Release: 3.2.16
38 class HTML_QuickForm_Rule_Email extends HTML_QuickForm_Rule
40 var $regex = '/^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&\'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/';
43 * Validates an email address
45 * @param string $email Email address
46 * @param boolean $checkDomain True if dns check should be performed
48 * @return boolean true if email is valid
50 function validate($email, $checkDomain = false)
52 // Fix for bug #10799: add 'D' modifier to regex
53 if (preg_match($this->regex . 'D', $email)) {
54 if ($checkDomain && function_exists('checkdnsrr')) {
55 $tokens = explode('@', $email);
56 if (checkdnsrr($tokens[1], 'MX') || checkdnsrr($tokens[1], 'A')) {
64 } // end func validate
67 function getValidationScript($options = null)
69 return array(" var regex = " . $this->regex . ";\n", "{jsVar} != '' && !regex.test({jsVar})");
70 } // end func getValidationScript
72 } // end class HTML_QuickForm_Rule_Email