Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction MB_EREGI_REPLACE pour combiner les tableaux pour obtenir un remplacement de texte multimodal et multi-règles?

Comment utiliser la fonction MB_EREGI_REPLACE pour combiner les tableaux pour obtenir un remplacement de texte multimodal et multi-règles?

M66 2025-06-23

Dans le cas du traitement du texte PHP, la fonction MB_ERGI_REPLACE () est particulièrement adaptée au traitement du contenu de texte codé UTF-8 car il prend en charge les chaînes multi-octets et les remplacements insensibles à la casse. Bien que cette fonction ait été abandonnée dans la nouvelle version de PHP (recommandée d'utiliser MB_EREG_REPLACE () ou preg_replace () ), il a toujours ses scénarios d'utilisation dans certains projets ou environnements spécifiques.

Cet article présentera comment utiliser la fonction MB_EREGI_REPLACE () en combinaison avec des tableaux pour implémenter une stratégie de remplacement de texte un-à-un ou plusieurs à plusieurs.

Syntaxe de base

La syntaxe de base de mb_eregi_replace () est la suivante:

 mb_eregi_replace(string $pattern, string $replacement, string $string, string $option = "msr")
  • $ motif : modèle d'expression régulière

  • $ Remplacement : remplacer le contenu

  • $ String : chaîne cible

  • $ Option : Match Options (peut être omise)

Analyse du scénario d'application

Supposons que nous voulons implémenter une telle logique de remplacement:

  • Remplacez tous les liens par "http: //" ou "https: //" préfixes par [lien]

  • Remplacez tous les mots comme "test" et "exemple" dans le texte par "exemple"

  • Remplacez plusieurs mots clés tels que "Apple" → "Apple", "Google" → "Google"

Nous pouvons utiliser des tableaux pour combiner ces règles et effectuer des remplacements séquentiellement à l'aide de array_map () ou de boucles.

Exemple de code

Voici un exemple complet montrant comment implémenter un remplacement de texte complexe à l'aide de tableaux avec MB_ERGI_REPLACE () :

 <?php

// Texte original
$text = <<<TEXT
Ceci est un texte de test,Inclure des liens:http://m66.net/page et https://m66.net/example。
en outre,Sont également inclus quelques mots de marque,Comme la pomme、Google,Il y a quelques exemples。
TEXT;

// Remplacer le tableau des règles:La clé est le mode,La valeur est le contenu de remplacement
$replace_rules = [
    // Correspondance de liaison,Remplacer par [Lien]
    '(http|https)://m66\.net/[a-zA-Z0-9/_\-]+' => '[Lien]',

    // Tester ou exemple → Exemple
    'test|exemple' => 'Exemple',

    // Remplacement de la marque
    'pomme' => 'Apple',
    'Google' => 'Google'
];

// Effectuer un remplacement multimode
foreach ($replace_rules as $pattern => $replacement) {
    $text = mb_eregi_replace($pattern, $replacement, $text);
}

// Résultats du traitement de la sortie
echo nl2br($text);

Résultat de sortie

 这是一个Exemple文本,Inclure des liens:[Lien] et [Lien]。
en outre,Sont également inclus quelques mots de marque,comme Apple、Google,还有一些Exemple内容。

Choses à noter

  1. Problèmes de performances : En cas de grand nombre de remplacements, un appel de boucle à MB_ERGI_REPLACE () apportera un fardeau de performance. Vous pouvez envisager de fusionner des règles avec un remplacement unique ou utiliser une version de tableau de preg_replace () .

  2. Caractères d'échappement : lors de la construction de modèles d'expression réguliers, des symboles comme . , / etc. doit être échappé correctement.

  3. Compatibilité régulière : bien que MB_EREGI_REPLACE () soit multi-octets, il ne prend pas en charge la régularité compatible perl. Il est recommandé d'utiliser preg_replace () pour le traitement du mode complexe.

Alternatives

Étant donné que MB_EREG_REPLACE () a été abandonné après PHP 7.3, l'approche recommandée consiste à utiliser MB_ERG_REPLACE () (Sensivement sensible) ou preg_replace () (plus puissant). Par exemple:

 $text = preg_replace(array_keys($replace_rules), array_values($replace_rules), $text);

Cela rendra les remplacements plus concis et plus efficaces dans l'exécution.

Résumer

En abstraction des règles de remplacement en un tableau, nous pouvons rapidement implémenter le remplacement de texte par lots multiples à l'aide de mb_eregi_replace () . Ce modèle est particulièrement adapté au nettoyage simple de contenu, au remplacement des mots clés, à la protection du contenu et à d'autres scénarios. Bien que cette fonction soit progressivement obsolète, ses idées peuvent toujours être déplacées vers des fonctions plus récentes ou d'autres langues pour atteindre un traitement de texte efficace et flexible.