使用PHP filter_var()或使用正则表达式进行邮件验证

时间:2010-10-30 18:13:16

标签: php regex filter email-validation

我今天了解到,可以通过两种方式验证电子邮件。一种方法是通过正则表达式,另一种方法是filter_var()函数。

如果有人能告诉我filter_var的验证有多强,并且有关于从正则表达式切换到它的想法的任何建议或建议,那么它会很棒。

2 个答案:

答案 0 :(得分:2)

如果您使用filter_var,它会验证a@b-.c之类的内容,严格说来有效,但您可能不希望在您的应用中允许此类地址。

如果使用正则表达式,则可以更好地控制允许和禁止的内容。

验证电子邮件地址最可靠的方法是尝试向其发送电子邮件,并请求收件人单击链接进行确认。这也有另一个好处 - 有人可能在输入他们的电子邮件地址时输入错误,结果仍然是有效的电子邮件地址,但不是正确地址。

答案 1 :(得分:1)

正如Mark Byers所说,filter_var确实验证了任何严格有效的东西,我认为这是件好事。例如,使用Gmail:
您的电子邮件地址是something@gmail.com。您想在x.com网站上注册。您并不完全信任该网站,并且您在电子邮件地址注册了一些内容+ x@gmail.com。 Gmail会自动将其重定向到您自己的收件箱。因此,如果这个不受信任的网站向某人出售您的电子邮件地址,并且您收到了一封电子邮件,其中包含了以及@x@gmail.com的内容,那么您就知道谁将您的电子邮件发送给了我们!

当你编写自己的正则表达式时,你可能不会考虑这样的事情,并且对于使用这种语法的人(比如我!)来说,它会变得非常烦人。我总是使用filter_validate()。这样,我知道有效的电子邮件地址将始终被验证。

无论如何,老实说:无论你使用自己的regexp还是filter_validate,我仍然可以编写一个可以验证的假电子邮件地址。您也可以接受任何内容并发送“激活您的帐户”电子邮件,以确保用户可以从您的网站接收和阅读电子邮件。