【发布时间】:2012-11-29 19:31:01
【问题描述】:
我正在尝试创建一个用户验证表单来检查电子邮件并针对我的数据库运行它。但是,如果有电子邮件,例如“my.name@domain.com”,它无论如何都会将其放入数据库,即使它是重复条目。
if (preg_match("/^([a-zA-Z0-9z])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['e-mail'])) {
//regular expression for email validation
$Email = $_POST['e-mail'];
} else {
$error[] = 'Your EMail Address is invalid ';
}
如何更改 preg_match 以在其中查找期间?顺便说一句,所有注册该网站的用户的电子邮件中都会有一个句号(仅适用于具有相同电子邮件格式的特定人群)。
【问题讨论】:
-
您应该使用
filter_var()而不是正则表达式 -
请不要使用正则表达式来验证电子邮件地址。 PHP 有 built in email validation 和 awesome external libraries 可以捕获更多由 RFC 引起的边缘情况。此外,验证电子邮件地址的唯一真正方法是向其发送邮件。最好使用格式验证来保护错字。
-
知道了。我会做出这样的改变。我通过向用户发送电子邮件来授权用户,但这是为了确保我能够首先做到这一点。谢谢!!!
标签: php preg-match email-validation