我正在使用PHP 5.3.10版本。以下是代码:
<?php $email = "test@example.c"; if (filter_var($email, FILTER_VALIDATE_EMAIL)) echo "Email: ".$email." correct"; else echo "email not correct"; ?>
它返回:"Email: test@example.c正确。
我认为只有一个字符的顶级域名是不正确的(根据这个列表:http://data.iana.org/TLD/tlds-alpha-by-domain.txt,我不知道有一个字符长度的顶级域名)。
那么,FILTER_VALIDATE_EMAIL过滤器是否正常工作?
FILTER_VALIDATE_EMAIL不支持PHP 5.2.14
验证电子邮件地址有点复杂。看一下这个列表:
有效的电子邮件地址
无效的电子邮件地址
Source http://en.wikipedia.org/wiki/Email_address
大多数所有的电子邮件验证实现都是“bug”,但php实现可以很好地使用,因为它接受所有常见的电子邮件地址
更新:
Found on http://www.php.net/manual/en/filter.filters.validate.php
关于没有的“部分”地址。在域部分,源代码中的一条注释(在ext/filter/logical_filters.c中)证明了这种拒绝:
这里是Michael Rushton的类链接(链接已断,请参阅下面的源代码),它支持RFC 5321/5322