php - 如何使用 PHP 过滤/删除 Google 电子邮件别名?

标签 php regex email email-validation google-account

我可以在 Google 帐户 (Gmail) 中创建无限的电子邮件别名,引用:http://www.gizmodo.com.au/2014/09/how-to-use-the-infinite-number-of-email-addresses-gmail-gives-you/

但我需要过滤电子邮件地址以避免用户在我的应用程序中使用相同的原始电子邮件进行注册。

请问有什么办法可以解决吗?或者我的唯一选择是使用正则表达式过滤?

最佳答案

我完全不同意评论说你不应该去掉“过滤器”(例如 user_email+some_filter_to_flag_incoming_messages@example.org)。 “你的用例和我的用例不一样”等等。[0]

tl;dr:您正在寻找的正则表达式模式是:'(\+.*)(?=\@)'

解释:

首先,编写一个匹配文字“+”符号和任何单个字符的正则表达式,任意次数:

'(\+.*)'

当用空字符串替换此模式时,这会将 tristan+some_filter@example.org 变成 tristan。如果您决定拆分 @ 符号,恭喜,将结果字符串连接到 '@' + domain.TLD 到此,您就完成了。我提到这一点是为了防止您已经拆分了电子邮件地址并且它只是闲逛。

如果您在@符号上拆分用户电子邮件地址,您需要使用“积极的先行”(如果它是由这个东西进行的,则匹配这个模式我指定)告诉你的比赛什么时候停止(这样我们就不会带走太多):

'(\+.*)(?=\@)'

有了这个,我们得到 tristan@example.org。万岁,实际上并没有那么粗糙。


[0]:在我的一个应用程序中,我存储了用户给我的用于通信的原始包含过滤器的电子邮件地址,但跟踪过滤器的使用情况并将规范帐户(内部引用)视为没有的版本过滤器(例如 user_email@gmail.com)。我这样做是为了让选择通过电子邮件地址定位的用户更容易相互搜索。

我理解人们为什么使用别名/过滤器:

  • 它们给人一种可以用来跟踪垃圾邮件发送者的错觉(就好像电子邮件收割机在出售列表之前不会删除过滤器一样)
  • 它们在路由电子邮件或触发事件方面很有用(例如,当您收到来 self +package_delivery@domain.tld 的电子邮件时发送文本)
  • “天哪,我能做到吗?”因素

这就是说,“我明白了,人们喜欢过滤器”,但作为应用程序作者或公司,有充分的理由注意到它们。

关于php - 如何使用 PHP 过滤/删除 Google 电子邮件别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26637346/

相关文章:

xml - 使用sed从XML文件中删除节点和数据

c# - C# 中的分隔嵌套括号

java - 通过java一键取消订阅电子邮件服务

matlab - 如何在 Matlab 中发送描述矩阵内容的电子邮件

ruby-on-rails - Rails ActionMailer View 文本缩进问题

php - 使用 PHP 在 drupal 模块中创建标准页面和表格

php - 使用php列出目录中的所有文件夹子文件夹和文件

php - Doctrine 2 删除实体问题

php - 表格: Post to multiple action or one based on input?

regex - 如何在Perl中使用Regex中的分词,星号和分词?