0

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

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

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

4

4 回答 4

1

您可能想使用stripos()查找字符串,然后使用str_ireplace()将 gmail 替换为 googlemail。

if(stripos($email,'@gmail.com')!== false){
    $email = str_ireplace('gmail.com','googlemail.com',$email);
}
于 2012-09-05T23:30:05.553 回答
1

使用 str_replace():

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

这将转变example@gmail.comexample@googlemail.com

于 2012-09-05T23:30:14.430 回答
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;
    }
    
于 2013-03-19T12:32:21.050 回答
0

使用substr()str_replace()

substr()可能是更安全的选择。还有很多其他的方法。swap()您正在寻找的将是(str_replace()如果您只是更改swapstr_replace应该做的伎俩。

于 2012-09-05T23:27:04.223 回答