验证电子邮件地址

时间:2012-11-08 19:07:03

标签: php validation

我正在回顾一个项目并整理一些验证位,通常我会使用正则表达式检查验证电子邮件是否正确,然后我遇到了:http://de2.php.net/manual/en/function.filter-var.php

现在我尝试了几项测试,但我没有得到预期的结果。

$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.";
}

我再说一遍,这不是一个有效的电子邮件地址。

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:3)

是的,你错过了一些东西。 bog^us@gmail.com是有效的电子邮件地址,因此您的测试会返回正确的结果。请参阅此文章,快速了解电子邮件地址中哪些字符有效。

http://en.wikipedia.org/wiki/Email_address

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

  • 大写和小写英文字母(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(字符点(。)为双倍)