Position actuelle: Accueil> Derniers articles> Remplacement dynamique des étiquettes variables dans du texte multilingue

Remplacement dynamique des étiquettes variables dans du texte multilingue

M66 2025-05-14

Lors du développement d'applications multilingues, nous devons souvent insérer des variables dynamiques dans le modèle. PHP fournit de nombreuses façons d'implémenter cette fonction de remplacement, où preg_replace_callback_array est un outil très puissant pour remplacer dynamiquement les balises dans un texte complexe, en particulier lorsque le texte doit prendre en charge plusieurs langues et inclure différentes variables.

1. Qu'est-ce que preg_replace_callback_array ?

preg_replace_callback_array est une fonction de remplacement d'expression régulière dans PHP. Il vous permet de gérer dynamiquement les opérations de remplacement par une fonction de rappel. Contrairement au prég_replace normal, preg_replace_callback_array peut gérer plusieurs modèles réguliers différents et définir les fonctions de rappel correspondantes pour chaque modèle, ce qui le rend très utile lors de la gestion des remplacements de texte complexes.

grammaire

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject): string
  • $ motifs_and_callbacks : il s'agit d'un tableau associatif, les clés du tableau sont des modèles d'expression régulières et les valeurs sont des fonctions de rappel.

  • $ Sujet : La chaîne cible à remplacer.

2. Utilisez preg_replace_callback_array dans un texte multilingue

Supposons que nous développons une application qui prend en charge multilingue et doit remplacer dynamiquement les balises variables dans différentes langues. En supposant que le modèle de texte contient deux variables: {nom d'utilisateur} et {email} , nous pouvons utiliser preg_replace_callback_array pour remplacer dynamiquement les valeurs de ces variables.

Exemple de code

 // Simuler les informations utilisateur
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// Définir les modèles de langue
$template = "accueillir, {username}! Votre e-mail est: {email}";

// Cartographie du mode régulier et de la fonction de rappel
$patterns_and_callbacks = [
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
    '/\{email\}/' => function($matches) use ($user) {
        return $user['email'];
    },
];

// utiliserpreg_replace_callback_arrayFaire un remplacement
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

Dans le code ci-dessus, nous définissons d'abord un tableau $ user contenant des informations utilisateur. Ensuite, une chaîne de modèle $ contenant du texte multilingue est définie, qui contient les deux étiquettes de variable {nom d'utilisateur} et {e-mail} . Ensuite, nous cartographions le modèle d'expression régulière et la fonction de rappel via un tableau associatif $ motifs_and_callbacks , et utilisons enfin la fonction preg_replace_callback_array pour effectuer l'opération de remplacement.

Résultat de sortie:

 accueillir, JohnDoe! Votre e-mail est: john@example.com

3. Utilisez preg_replace_callback_array pour implémenter un support multilingue

Dans les applications pratiques, nous devons souvent charger dynamiquement différents modèles de langue en fonction de la sélection de la langue de l'utilisateur. Avec preg_replace_callback_array , nous pouvons remplacer dynamiquement les variables dans les modèles par des tableaux multilingues.

Exemple de code: Chargez dynamiquement le texte dans différentes langues

 // Simuler le langage utilisateur
$lang = 'zh';

// Modèles multilingues
$translations = [
    'en' => "Welcome, {username}! Your email is: {email}",
    'zh' => "accueillir, {username}! Votre e-mail est: {email}",
];

// Informations sur l'utilisateur
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// Sélectionnez le modèle pour la langue actuelle
$template = $translations[$lang];

// Cartographie du mode régulier et de la fonction de rappel
$patterns_and_callbacks = [
    '/\{username\}/' => function($matches) use ($user) {
        return $user['username'];
    },
    '/\{email\}/' => function($matches) use ($user) {
        return $user['email'];
    },
];

// utiliserpreg_replace_callback_arrayFaire un remplacement
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

Dans cet exemple, nous chargeons d'abord le texte de modèle correspondant en fonction de la sélection de la langue de l'utilisateur. Ensuite, le remplacement variable est effectué via des fonctions régulières et de rappel comme précédemment.

Résultat de sortie (en supposant que les Chinois sont sélectionnés):

 accueillir, JohnDoe! Votre e-mail est: john@example.com

4. Remplacez le nom de domaine dans l'URL

Parfois, nous pouvons avoir besoin de remplacer dynamiquement le nom de domaine de l'URL dans le modèle, en particulier lorsque le nom de domaine de l'environnement change. Par exemple, si vous utilisez une URL différente pendant le développement et que vous devez passer à l'environnement de production plus tard, nous pouvons utiliser preg_replace_callback_array pour remplacer dynamiquement le nom de domaine de l'URL.

Exemple de code: remplacer le nom de domaine de l'URL

 // Simuler les informations utilisateur
$user = [
    'username' => 'JohnDoe',
    'email' => 'john@example.com',
];

// Le modèle contient URL
$template = "Veuillez visiter notre site Web: https://www.old-domain.com/profile/{username}";

// Cartographie du mode régulier et de la fonction de rappel
$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'];
    },
];

// utiliserpreg_replace_callback_arrayFaire un remplacement
$finalText = preg_replace_callback_array($patterns_and_callbacks, $template);

echo $finalText;

Résultat de sortie:

 Veuillez visiter notre site Web: https://www.m66.net/profile/JohnDoe

Dans cet exemple, nous utilisons une expression régulière pour faire correspondre l'URL et remplacer le nom de domaine par m66.net . Cette opération nous permet d'ajuster dynamiquement les URL dans différents environnements.

5. Résumé

preg_replace_callback_array est un outil très flexible et puissant, particulièrement adapté aux scénarios où les balises variables doivent être remplacées dynamiquement dans du texte multilingue. En combinant des expressions et des fonctions de rappel régulières, vous pouvez facilement répondre aux exigences de remplacement de texte complexes, en prenant en charge le chargement dynamique et le remplacement des variables en plusieurs langues, ce qui rend le code plus flexible et maintenable.