拥有在PHP中验证的电子邮件地址与的preg_match问题
问题描述:
下面的代码:拥有在PHP中验证的电子邮件地址与的preg_match问题
if(trim($_POST['email']) == '') {
$hasError = true;
} else if (!preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$", trim($_POST['email']))) {
$hasError = true;
} else {
$email = trim($_POST['email']);
}
这里的错误信息:
警告:的preg_match()[function.preg匹配]:没有结束符“在/home/bigsilkd/public_html/UBA/join.php /”里找到的第22行
答
这也正是它说:
preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$"
应该是
preg_match("/^[A-Z0-9._%-][email protected][A-Z0-9._%-]+\.[A-Z]{2,4}$/"
^
|
This was missing ---/
答
您不应该使用正则表达式来验证电子邮件。例如,你的正则表达式不允许我的电子邮件地址[email protected]
,这是一个正常和有效的电子邮件。保存我的邮件!由于表单验证不正确,它正在消失!使用filter_var
!
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
// email is valid
}
问题是你没有使用正确的正则表达式来验证电子邮件地址。正确的可以在这里找到:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html – Domenic 2011-04-03 18:22:04
'filter_var($ _ POST ['email'],FILTER_VALIDATE_EMAIL);'是要复杂吗? – Wrikken 2011-04-03 18:23:58