0

新しいプロジェクトの登録システムを作成しています。唯一の問題は、@googlemail.com と @gmail.com が別のメール アドレスとして認識されることです。「@googlemail.com」から「@gmail.com」にすべてを変更する方法について、アイデアやPHPコードを持っている人はいますか。

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

私のプログラミング スキルは限られているため、疑似コードを判断しないでください。

4

4 に答える 4

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 に答える
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.comされますexample@googlemail.com

于 2012-09-05T23:30:14.430 に答える
0

またはのいずれsubstr()かを使用しますstr_replace()

substr()おそらくより安全なオプションです。他にもたくさんの方法があります。swap()あなたが探しているのは(str_replace()あなたがただ変更swapするstr_replaceなら、トリックをするべきです)でしょう。

于 2012-09-05T23:27:04.223 に答える