垃圾郵件發送者讓我發瘋。不知道谷歌如何通過添加一個點或一個加號來允許無限的電子郵件別名。所以我需要對這樣的電子郵件進行清理:
- [email protected]
- henix..mail @gmail.com
- sar ah .black . @gmail.com
對此:
有效的正則運算式是這樣的:
(?:\.|\ .*)(?=.*?@gmail\.com)
我的電子郵件功能是 $mail['email'],那么我如何在這個功能中匹配點和加號,如果找到然后洗掉它們并清理它們?
我現在發現的......有效,但不知道該怎么做
preg_match( '/@gmail\.com$/', $mail['email']
preg_replace('^(?:\.|\ .*)(?=.*?@gmail\.com)$', $mail['email'] );
uj5u.com熱心網友回復:
您的模式處于錨定狀態,因此使用^(?:\.|\ .*)(?=.*?@gmail\.com)$不會找到單獨的匹配項。
此外, .*可以匹配的不僅僅是加號,洗掉的內容超出預期。
您可以使用字符類匹配點或加號[. ],并使用正向前瞻將 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']);
輸出
[email protected]
uj5u.com熱心網友回復:
如果你想讓你的比賽發揮作用,你可以添加到@The Fourth Bird 的答案:
preg_replace($pattern, '', $mail['email'] ,-1,$changes);
if ($changes>0) {
echo "Mail changed";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/472960.html
