Googlemail.com/gmail.com电子邮件规范化

时间:2012-09-05 23:18:23

标签: php mysql

我正在为我的新项目创建一个注册系统。我唯一的问题是@ googlemail.com和@ gmail.com被识别为单独的电子邮件地址。有没有人有关于如何将它们从“@ googlemail.com”更改为“@ gmail.com”的想法或一些PHP代码。

**Some pseudocode to help you**
    $change = '@gmail.com'
   $email = swap($change,'@googlemail.com', $email);

我的编程技巧有限,所以不要判断伪代码。

4 个答案:

答案 0 :(得分:1)

您可能希望使用stripos()来查找字符串,然后str_ireplace()使用googlemail替换gmail。

if(stripos($email,'@gmail.com')!== false){
    $email = str_ireplace('gmail.com','googlemail.com',$email);
}

答案 1 :(得分:1)

使用str_replace():

$email = 'example@gmail.com';
$email = str_replace('@gmail.com','@googlemail.com',$email);

这会将example@gmail.com转换为example@googlemail.com

答案 2 :(得分:1)

规范化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;
    }
    

答案 3 :(得分:0)

使用substr()str_replace()

substr()可能是更安全的选择。还有很多其他方法。 您要查找的swap()str_replace()(如果您只是将swap更改为str_replace,那么就应该这样做。