Preg_replace gmail 中的加号和点号
Preg_replace plus and dots in gmail
垃圾邮件发送者快把我逼疯了。不知道 Google 如何通过添加一个点或一个加号来允许无限的电子邮件别名。所以我需要像这样清理电子邮件:
- john.brian@gmail.com
- henix..mail+@gmail.com
- sar+ah+.black+.+@gmail.com
对此:
- johnbrian@gmail.com
- henixmail@gmail.com
- sarahblack@gmail.com
有效的正则表达式是这样的:
(?:\.|\+.*)(?=.*?@gmail\.com)
我的电子邮件函数是 $mail['email'],那么如何匹配此函数中的点和加号(如果找到)然后删除它们并清理它们?
我现在发现了什么...
可以,但不知道如何做,如果这个那么那个
preg_match( '/@gmail\.com$/', $mail['email']
preg_replace('^(?:\.|\+.*)(?=.*?@gmail\.com)$', $mail['email'] );
您的模式已锚定,因此使用 ^(?:\.|\+.*)(?=.*?@gmail\.com)$
将找不到单独的匹配项。
而且 +.*
可以匹配的不仅仅是加号,删除的比预期的多。
您可以使用字符 class [.+]
匹配点或加号,并使用正向先行断言 gmail.com 到右侧,仅匹配非空白字符,@除外直到遇到第一次出现的@
查看 regex101 上的比赛。
例如:
$pattern = "/[.+](?=[^\s@]*@gmail\.com)/";
$mail = ["email" => "sar+ah+.black+.+@gmail.com"];
$mail['email'] = preg_replace($pattern, '', $mail['email'] );
print_r($mail['email']);
输出
sarahblack@gmail.com
如果你想让你的比赛成功,你可以添加到@The fourth bird answer :
preg_replace($pattern, '', $mail['email'] ,-1,$changes);
if ($changes>0) {
echo "Mail changed";
}
垃圾邮件发送者快把我逼疯了。不知道 Google 如何通过添加一个点或一个加号来允许无限的电子邮件别名。所以我需要像这样清理电子邮件:
- john.brian@gmail.com
- henix..mail+@gmail.com
- sar+ah+.black+.+@gmail.com
对此:
- johnbrian@gmail.com
- henixmail@gmail.com
- sarahblack@gmail.com
有效的正则表达式是这样的:
(?:\.|\+.*)(?=.*?@gmail\.com)
我的电子邮件函数是 $mail['email'],那么如何匹配此函数中的点和加号(如果找到)然后删除它们并清理它们?
我现在发现了什么... 可以,但不知道如何做,如果这个那么那个
preg_match( '/@gmail\.com$/', $mail['email']
preg_replace('^(?:\.|\+.*)(?=.*?@gmail\.com)$', $mail['email'] );
您的模式已锚定,因此使用 ^(?:\.|\+.*)(?=.*?@gmail\.com)$
将找不到单独的匹配项。
而且 +.*
可以匹配的不仅仅是加号,删除的比预期的多。
您可以使用字符 class [.+]
匹配点或加号,并使用正向先行断言 gmail.com 到右侧,仅匹配非空白字符,@除外直到遇到第一次出现的@
查看 regex101 上的比赛。
例如:
$pattern = "/[.+](?=[^\s@]*@gmail\.com)/";
$mail = ["email" => "sar+ah+.black+.+@gmail.com"];
$mail['email'] = preg_replace($pattern, '', $mail['email'] );
print_r($mail['email']);
输出
sarahblack@gmail.com
如果你想让你的比赛成功,你可以添加到@The fourth bird answer :
preg_replace($pattern, '', $mail['email'] ,-1,$changes);
if ($changes>0) {
echo "Mail changed";
}