0

我要回顾一个项目并整理一些验证位,通常我会使用正则表达式检查来验证电子邮件是否正确,然后我遇到了: 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.";
}

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

我在这里错过了什么吗?

4

1 回答 1

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(字符点(。)是双)
于 2012-11-08T19:12:39.163 回答