我有以下代码来检查用户输入是否是有效的电子邮件,可能已经有一些问题,但似乎没有人验证PHP函数。
/* check if valid email*/
public function isValidEmail($email){
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
return true;
}
return false;
}
如果我们使用此函数进行测试:
isValidEmail('some?=Wrong@mail.com')
这应该返回false
因为像?=
这样的字符在电子邮件地址内。有没有更严格的方法来检查电子邮件?
这里的问题是?
和=
对于电子邮件地址完全有效。来自维基百科上的RFC控制电子邮件地址
电子邮件地址的本地部分可以使用以下任何 ASCII 字符:
这些特殊字符:!#$%&'*+-/=?^_'{|}~ (ASCII: 33, 35–39, 42, 43, 45, 47, 61, 63, 94–96, 123–126)
如果您试图确保电子邮件地址确实存在,请注意该路径非常困难