Php 验证电子邮件地址

Php 验证电子邮件地址,php,validation,Php,Validation,我回顾了一个项目,整理了一些验证信息,通常我会使用正则表达式检查来验证电子邮件是否正确,然后我发现: 现在我已经做了几次测试,但没有得到我预期的结果 $email_b = 'bog^us@gmail.com'; var_dump(filter_var($email_b, FILTER_SANITIZE_EMAIL)); 返回: string(16) "bog^us@gmail.com" 但对我来说,这是没有消毒的,当我尝试 if (filter_var($email_b, FILTER_V

我回顾了一个项目,整理了一些验证信息,通常我会使用正则表达式检查来验证电子邮件是否正确,然后我发现:

现在我已经做了几次测试,但没有得到我预期的结果

$email_b = 'bog^us@gmail.com';
var_dump(filter_var($email_b, FILTER_SANITIZE_EMAIL));
返回:

string(16) "bog^us@gmail.com" 
但对我来说,这是没有消毒的,当我尝试

if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
    echo "This (email_b) email address is considered valid.";
}
我再说一遍,这不是一个有效的电子邮件地址


我在这里遗漏了什么吗?

是的,你遗漏了什么<代码>沼泽^us@gmail.com是有效的电子邮件地址,因此您的测试将返回正确的结果。请参阅本文,快速了解电子邮件地址中哪些字符有效

在电子邮件地址的本地部分(@前面的位),以下字符是合法的:-

  • 大写和小写英文字母(a-z,a-z)(ASCII:65-90,97-122)
  • 数字0到9(ASCII:48-57)
  • 字符!#$%&'*+-/=^_`{|}~(ASCII:33,35-39,42,43,45,47,61,63,94-96,123-126)
加上链接文章中提到的其他一些限制

本文提供了一些无效地址的示例,供您在测试中使用。例如:-

  • Abc.example.com(一个@字符必须将本地部分和域部分分开)
  • Abc.@example.com(字符点(.)是本地部分的最后一个)
  • Abc。。123@example.com(字符点(.)为双精度)

  • 是的,你遗漏了一些东西<代码>沼泽^us@gmail.com是有效的电子邮件地址,因此您的测试将返回正确的结果。请参阅本文,快速了解电子邮件地址中哪些字符有效

    在电子邮件地址的本地部分(@前面的位),以下字符是合法的:-

    • 大写和小写英文字母(a-z,a-z)(ASCII:65-90,97-122)
    • 数字0到9(ASCII:48-57)
    • 字符!#$%&'*+-/=^_`{|}~(ASCII:33,35-39,42,43,45,47,61,63,94-96,123-126)
    加上链接文章中提到的其他一些限制

    本文提供了一些无效地址的示例,供您在测试中使用。例如:-

    • Abc.example.com(一个@字符必须将本地部分和域部分分开)
    • Abc.@example.com(字符点(.)是本地部分的最后一个)
    • Abc。。123@example.com(字符点(.)为双精度)

    对您来说不是,但根据RFC,这些字符是有效的。您正在尝试使用哪个版本的PHP?^“是电子邮件地址的有效字符(请参阅或相应的RFC)好的,我不知道所有这些都是有效的电子邮件地址:)doh。谢谢大家,我猜这是RTFM的一个例子。对你们来说不是,但根据RFC,这些字符是有效的。你们在尝试哪一版本的PHP?^“是电子邮件地址的有效字符(请参阅或相应的RFC)好的,我不知道所有这些都是有效的电子邮件地址:)doh。谢谢各位,我猜这是RTFM的一个案例。