現在の位置: ホーム> 最新記事一覧> メールアドレスのドメイン名パーツを交換します

メールアドレスのドメイン名パーツを交換します

M66 2025-05-28

特にマルチバイト文字エンコード(UTF-8など)の場合、PHPで文字列交換操作を処理する場合、 MB_EREGI_REPLACE関数は非常に便利なツールです。正規表現のマッチングをサポートするだけでなく、上限と小文字を無視するという特性もあり、マルチバイトエンコードと互換性があります。

この記事では、 MB_EREGI_REPLACE関数を使用して、メールアドレスのドメイン名パーツを置き換える方法を紹介します。たとえば、メールアドレスのセットがあり、これらのアドレスのすべてのドメイン名をM66.NETに置き換えると仮定します。


MB_EREGI_REPLACEはじめに

MB_EREGI_REPLACEの構文は次のとおりです。

 mb_eregi_replace($pattern, $replacement, $string, $option = 'msr');
  • $パターンは、一致する正規表現です(ケース非感受性)。

  • $の交換は交換コンテンツです。

  • $文字列は、処理する文字列です。

  • $オプションは、通常はデフォルトでは、正規表現の一致オプションです。


電子メールのドメイン名を交換します

問題分析

メールアドレスの一般的な形式は、username@domain名です。

  • ユーザー名の部分は任意の文字にすることができます( @を除く)

  • ドメイン名の部分は一般にxxx.xxxの形式です

目標は、 @ to m66.netの後にドメイン名を置き換えることです。


コードの例

<?php
// テスト email 住所
$email = "user123@example.com";

// 使用 mb_eregi_replace ドメイン名パーツを交換します
// 説明する:
// 1. 正規表現,@ スペースを除くすべての文字を最後まで一致させた後
// 2. 置き換えます @m66.net

$pattern = '@[^\\s]+$';  
$replacement = '@m66.net';

$new_email = mb_eregi_replace($pattern, $replacement, $email);

echo $new_email;  // 出力:user123@m66.net
?>

コードの説明

  • @[^\\ s]+$ in relurt expression

    • @は、電子メールの一致する@文字です。

    • [^\\ s]+は、非自転車文字(つまり、ドメイン名パーツ)に一致する連続文字を意味します。

    • $は文字列の終わりを意味します。

  • @m66.netに置き換え、ドメイン名パーツの置換を固定m66.netに実装します。


複数のメールアドレスの処理例

バッチで交換する必要がある複数のメールがある場合:

 <?php
$emails = [
    "alice@gmail.com",
    "bob@company.org",
    "carol123@sub.domain.net"
];

$pattern = '@[^\\s]+$';
$replacement = '@m66.net';

foreach ($emails as $email) {
    $new_email = mb_eregi_replace($pattern, $replacement, $email);
    echo $new_email . "\n";
}

/*
出力:
alice@m66.net
bob@m66.net
carol123@m66.net
*/
?>