纳扎尔蓬克 / 电子邮件地址
电子邮件地址解析和净化。
1.0.6
2023-08-24 11:30 UTC
Requires
- php: >=8.1.2
This package is auto-updated.
Last update: 2024-09-24 13:53:45 UTC
README
许多开发者难以验证电子邮件。有些人只是使用正则表达式,其他人放弃检查,还有一些人绘制表格。
一点哲学
电子邮件已经走过了很长的路,留下了痕迹。但通常,不需要维护电子邮件的所有功能。大多数情况下,用户使用电子邮件服务。因此,从它们出发是一个明智的想法。
因此,检查将非常简单
- 清除字符串中的空格
- 按@分割成两部分
- 检查剩余的域名部分
- 如果找不到提供者,则按需处理
可能出错的是什么?
点
一些电子邮件服务提供商有一个有趣的特点 - 无意义的点。也就是说 example@gmail.com
和 e.x.a.m.p.l.e@gmail.com
是同一个地址。相应地,如果用户注册了多个账户,然后决定绑定 oauth
,那么可能会很有趣。
此外
一些电子邮件服务提供商有一个有趣的特点 - 忽略加号后的所有内容。也就是说 example@gmail.com
和 example+spam@gmail.com
是同一个地址。相应地,如果用户注册了多个账户,然后决定绑定 oauth
,那么可能会很有趣。
域名
一些电子邮件服务提供商忽略域名的差异。也就是说 example@gmail.com
和 example@googlemail.com
是同一个地址。相应地,如果用户注册了多个账户,然后决定绑定 oauth
,那么可能会很有趣。
非常聪明的用户
搭建自己的服务器或使用一次性邮箱并不困难。因此,不可避免地会出现完全有效地址格式的问题。
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]
但这个问题超出了本文的范围,所以我们继续。
地址格式
忽略域名后,我们剩下用户部分需要根据服务本身允许的格式进行检查。可以采取两种方法
- 收集最自由的正则表达式,不再烦恼。
- 或者,为了不向明显无效的地址发送字节,根据表格检查每个禁止的序列。
如何处理取决于你,而表格如下所示。
min
最小长度max
最大长度chars
允许的字符first
允许的第一个字符last
允许的最后一个字符!.
检查时是否删除点..
是否允许两个点连续出现._
点和下划线是否可以相邻.-
点和破折号是否可以相邻.0
点可以与数字相邻吗__
是否允许两个下划线连续出现_-
下划线和破折号是否可以相邻--
是否允许两个破折号连续出现.+
字符串中是否可以出现多个点+
是否忽略+
符号之后的全部内容l
后面需要至少一个字母的非字母字符数量t
是否手动测试过数据
域名
d
所有域名是否都绑定到一个账户上