我正在为我的新项目创建一个注册系统。我唯一的问题是@googlemail.com和@gmail.com被识别为不同的电子邮件地址。有人知道如何将它们从"@googlemail.com"更改为"@gmail.com"吗?
**Some pseudocode to help you**
$change = '@gmail.com'
$email = swap($change,'@googlemail.com', $email);
我的编程技能有限,所以不要判断伪代码。
使用str_replace():
$email = 'example@gmail.com';
$email = str_replace('@gmail.com','@googlemail.com',$email);
这将把example@gmail.com
转换为example@googlemail.com
您可能需要使用stripos()查找字符串,然后使用str_ireplace()将gmail替换为googlemail。
if(stripos($email,'@gmail.com')!== false){
$email = str_ireplace('gmail.com','googlemail.com',$email);
}
规范GMail地址并不像看上去那么容易。GMail具有以下更改地址的功能:
- 不同的域名:gmail,googlemail
- 圆点仅用于装饰:my.address@gmail.com和myaddress@gmail.com属于同一个邮箱
-
可以使用"+"符号添加随机文本:my.addres+sometext@gmail.com
/** * Normalize a GMail Address. * * Example: * my.name.1+ABC123@gmail.com => myname1@gmail.com * my.name@googlemail.com => myname@gmail.com * * @param string $email * @return string */ public function normalize ($email) { foreach (array( 'gmail.com', 'googlemail.com' ) as $domain) { if (substr_count($email, $domain)) { $email = preg_replace('/'+.*(@)/i', '''1', $email); //removes +ABC123 $email = explode('@', $email); $email[0] = str_replace('.', '', $email[0]); //remove dots $email = implode('@', $email); $email = str_replace('@' . $domain, '@gmail.com', $email); //set default domain } } return $email; }
使用substr()
或str_replace()
substr()
可能是更安全的选择。还有很多其他方式。你要找的swap()
应该是str_replace()
(如果你只是把swap
改成str_replace
就可以了。