現在の位置: ホーム> 最新記事一覧> 多言語テキストの変数タグの動的置換

多言語テキストの変数タグの動的置換

M66 2025-05-14

多言語アプリケーションを開発するときは、動的変数をテンプレートに挿入する必要があることがよくあります。 PHPは、この交換機能を実装する多くの方法を提供します。PREG_REPLACE_CALLBACK_ARRAY、特にテキストが複数の言語をサポートし、異なる変数を含める必要がある場合、複雑なテキストでタグを動的に置き換えるための非常に強力なツールです。

1。preg_replace_callback_arrayとは何ですか?

preg_replace_callback_arrayは、phpの正規表現置換機能です。これにより、コールバック関数で交換操作を動的に処理できます。通常のpreg_replaceとは異なり、 preg_replace_callback_arrayは複数の異なる通常のパターンを処理し、各パターンの対応するコールバック関数を定義できます。これにより、複雑なテキスト置換を扱うときに非常に役立ちます。

文法

preg_replace_callback_array(array $patterns_and_callbacks, string $subject): string
  • $ patterns_and_callbacks :これは連想配列であり、配列のキーは正規表現パターンであり、値はコールバック関数です。

  • $件名:交換するターゲット文字列。

2。多言語テキストでpreg_replace_callback_arrayを使用します

多言語をサポートし、異なる言語で変数タグを動的に置き換える必要があるアプリケーションを開発しているとします。テキストテンプレートに2つの変数が含まれていると仮定すると、 {username}{email}の2つの変数が含まれているため、 preg_replace_callback_arrayを使用して、これらの変数の値を動的に置き換えることができます。

サンプルコード

// ユーザー情報をシミュレートします
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// 言語テンプレートを定義します
$template = "いらっしゃいませ, {username}! あなたのメールはです: {email}";

// 通常のモードとコールバック関数のマッピング
$patterns_and_callbacks = [
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
    '/\{email\}/' => function($matches) use ($user) {
        return $user['email'];
    },
];

// 使用preg_replace_callback_array交換します
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

上記のコードでは、最初にユーザー情報を含む配列$ユーザーを定義します。次に、多言語テキストを含む$テンプレート文字列が定義されています。これには、2つの変数ラベル{username}{email}が含まれます。次に、連想配列$ patterns_and_callbacksを使用して正規表現パターンとコールバック関数をマッピングし、最後にpreg_replace_callback_array関数を使用して置換操作を実行します。

出力結果:

 いらっしゃいませ, JohnDoe! あなたのメールはです: john@example.com

3. preg_replace_callback_arrayを使用して、多言語サポートを実装します

実際のアプリケーションでは、ユーザーの言語選択に応じて異なる言語テンプレートを動的にロードする必要があることがよくあります。 preg_replace_callback_arrayを使用すると、テンプレート内の変数を多言語配列に動的に置き換えることができます。

サンプルコード:異なる言語でテキストを動的にロードします

// ユーザー言語をシミュレートします
$lang = 'zh';

// 多言語テンプレート
$translations = [
    'en' => "Welcome, {username}! Your email is: {email}",
    'zh' => "いらっしゃいませ, {username}! あなたのメールはです: {email}",
];

// ユーザー情報
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// 現在の言語のテンプレートを選択します
$template = $translations[$lang];

// 通常のモードとコールバック関数のマッピング
$patterns_and_callbacks = [
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
    '/\{email\}/' => function($matches) use ($user) {
        return $user['email'];
    },
];

// 使用preg_replace_callback_array交換します
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

この例では、最初にユーザーの言語選択に基づいて対応するテンプレートテキストをロードします。次に、以前と同様に、通常のように通常のコールバック関数を通じて可変交換が実行されます。

出力結果(中国人が選択されていると仮定):

 いらっしゃいませ, JohnDoe! あなたのメールはです: john@example.com

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

特に環境のドメイン名が変化する場合、テンプレート内のURLのドメイン名を動的に置き換える必要がある場合があります。たとえば、開発中に別のURLを使用し、後で生産環境に切り替える必要がある場合、 preg_replace_callback_arrayを使用して、URLのドメイン名を動的に置き換えることができます。

サンプルコード:URLドメイン名を置き換えます

// ユーザー情報をシミュレートします
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// テンプレートには含まれます URL
$template = "当社のウェブサイトをご覧ください: https://www.old-domain.com/profile/{username}";

// 通常のモードとコールバック関数のマッピング
$patterns_and_callbacks = [
    '/https?:\/\/(www\.[a-zA-Z0-9\-\.]+)\//' => function($matches) {
        return str_replace($matches[1], 'm66.net', $matches[0]);
    },
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
];

// 使用preg_replace_callback_array交換します
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

出力結果:

 当社のウェブサイトをご覧ください: https://www.m66.net/profile/JohnDoe

この例では、正規表現を使用してURLを一致させ、ドメイン名をM66.netに置き換えます。この操作により、さまざまな環境でURLを動的に調整できます。

5。概要

preg_replace_callback_arrayは非常に柔軟で強力なツールであり、特に多言語テキストで変数タグを動的に置き換える必要があるシナリオに適しています。正規表現とコールバック関数を組み合わせることで、複雑なテキスト交換要件を簡単に処理し、複数の言語での動的な負荷と可変交換をサポートし、コードをより柔軟で保守可能にします。