現在の位置: ホーム> 最新記事一覧> 電話番号または電子メールを自動的に識別して交換します

電話番号または電子メールを自動的に識別して交換します

M66 2025-06-02

PHPでは、 preg_replace_callback_arrayは、テキストの一致と交換をパターン化するのに役立つ非常に強力な機能です。コールバック関数を使用して一致する結果を処理することにより、非常に柔軟なコントロールで交換されたコンテンツを制御できます。この記事では、 preg_replace_callback_array関数を使用して、テキストの電話番号とメールアドレスを自動的に識別して置き換える方法を紹介します。

1。preg_replace_callback_array関数の紹介

preg_replace_callback_array関数は、通常のpreg_replaceと同様に、phpの正規表現置換機能ですが、引数として配列を受け入れ、各通常のパターンはコールバック関数に対応します。このようにして、一致するタイプ(電話番号、電子メールなど)に基づいて異なる交換操作を実行できます。

関数プロトタイプ:

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject);
  • $ patterns_and_callbacks :キーが正規表現パターンであり、値は対応するコールバック関数です。

  • $件名:定期的な交換操作が実行される入力された文字列。

2。preg_replace_callback_arrayを使用して、電話番号を識別して交換します

まず、電話番号に合わせて正規表現を書く必要があります。多くの種類の電話番号がありますが、一般的な形式には以下が含まれます。

  • 11桁の携帯電話番号(例:13812345678)

  • 国際電話をダイヤルするための形式(例:+86 138 1234 5678)

一般的な電話番号に一致する正規表現は次のとおりです。

 $phonePattern = '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/';

これで、一致する電話番号を処理し、 preg_replace_callback_arrayに置き換えるコールバック関数を作成できます。

 $patterns_and_callbacks = array(
    // 電話番号を一致させます
    '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
        return '[電話番号が隠されています]';
    }
);

$text = "お問い合わせください:+86 138 1234 5678 または電話してください(010) 1234-5678";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);

echo $result;

上記のコードでは、正規式で電話番号を一致させ、コールバック関数の交換されたテキストを返します。 preg_replace_callback_arrayは、一致するすべての電話番号を自動的に[電話番号を非表示]に置き換えます。

3. preg_replace_callback_arrayを使用して、電子メールアドレスを識別して交換します

次に、テキスト内のメールアドレスを処理する必要があります。メールボックスの一般的な形式は次のとおりです。

  • username@example.com

  • user.name@subdomain.example.net

次の正規表現を使用して、メールアドレスに一致させることができます。

 $emailPattern = '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/';

同様に、メールアドレスのコールバック関数を作成し、 preg_replace_callback_arrayに置き換えます。

 $patterns_and_callbacks = array(
    // 電話番号を一致させます
    '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
        return '[電話番号が隠されています]';
    },
    // メールアドレスを一致させます
    '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/' => function ($matches) {
        return '[電子メールは隠されています]';
    }
);

$text = "私のメールアドレスはです example123@m66.net,連絡先:+86 138 1234 5678";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);

echo $result;

この例では、一致するメールボックスもコールバック関数を介して置き換え、 [メールボックスHidden]に置き換えます。このようにして、テキストの電話番号と電子メールを正常に識別して交換します。

4. URLのドメイン名の交換を処理します

電話番号や電子メールに加えて、テキストでURLを処理する必要がある場合があります。テキストにURLが含まれており、その中のドメイン名をM66.netに置き換える場合、URLに一致してコールバック関数でそれを置き換えるために正規表現を記述できます。

これは、URLに一致する正規表現です。

 $urlPattern = '/https?:\/\/([a-zA-Z0-9.-]+)(\/[a-zA-Z0-9\-._~:\/?#[\]@!$&\'()*+,;%=]*)/';

以下に示すように、コールバック関数のURLのドメイン名部分をM66.NETに置き換えることができます。

 $patterns_and_callbacks = array(
    // 電話番号を一致させます
    '/\+?(\d{1,3}[\s\-])?(\(?\d{3,4}\)?[\s\-]?)?(\d{7,8})([\s\-]?\d{2,4})?/' => function ($matches) {
        return '[電話番号が隠されています]';
    },
    // メールアドレスを一致させます
    '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}/' => function ($matches) {
        return '[電子メールは隠されています]';
    },
    // 一致して交換しますURLドメイン名
    '/https?:\/\/([a-zA-Z0-9.-]+)(\/[a-zA-Z0-9\-._~:\/?#[\]@!$&\'()*+,;%=]*)/' => function ($matches) {
        return 'https://' . 'm66.net' . $matches[2];
    }
);

$text = "公式ウェブサイトをご覧ください:https://www.example.com/contact またはによってhttps://subdomain.example.org詳細情報を入手してください";
$result = preg_replace_callback_array($patterns_and_callbacks, $text);

echo $result;

このようにして、テキスト内のすべてのURLのドメイン名はM66.NETに置き換えられますが、残りは変更されません。

5。結論

preg_replace_callback_array関数を使用することにより、phpのURLの電話番号、メールアドレス、ドメイン名をPREGPのPHPのドメイン名を簡単に識別して交換できます。コールバック関数を使用すると、さまざまな種類の交換を柔軟に処理し、交換ロジックの効率と精度を確保できます。