Position actuelle: Accueil> Derniers articles> Utilisez preg_replace () au lieu de mb_eregi_replace pour réaliser une correspondance Unicode plus complexe

Utilisez preg_replace () au lieu de mb_eregi_replace pour réaliser une correspondance Unicode plus complexe

M66 2025-06-02

Dans PHP 7.0 et plus tard, MB_EREGI_REPLACE () a été officiellement obsolète et a été complètement supprimé après PHP 7.1. Cela a dérangé de nombreux développeurs qui comptent sur le remplacement régulier des cordes à plusieurs octets. Surtout lorsqu'un remplacement insensible à la cas des chaînes Unicode (comme le chinois, le japonais, etc.) est nécessaire, il est particulièrement important de trouver une alternative équivalente et plus puissante.

Heureusement, la fonction prég_replace () de PHP, combinée à la prise en charge du modificateur et Unicode correctes, peut implémenter encore plus que MB_EREGI_REPLACE () . Cet article introduira progressivement comment remplacer parfaitement MB_EREGI_REPLACE ( ) par preg_replace () et implémenter une puissante correspondance régulière Unicode.

Pourquoi mb_eregi_replace () est-il déprécié?

MB_ERGI_REPLACE () est une fonction de remplacement régulière insensible à la cas dans une extension de chaîne multi -yte (MBSTring). Cependant, son problème est:

  • La syntaxe est plus âgée et ne prend pas en charge la régularité du style Perl.

  • Performance médiocre.

  • Avec Unicode moderne, une capacité de traitement limitée et des coûts de maintenance élevés.

Par conséquent, il est recommandé d'utiliser le prég_replace () plus moderne et riche en fonctionnalités.

Utilisez preg_replace () au lieu de mb_eregi_replace ()

Utilisation de base

Supposons que nous ayons utilisé:

 mb_eregi_replace("test", "remplacer", $text);

Nous pouvons le réécrire comme ceci:

 preg_replace("/test/ui", "remplacer", $text);

Ici, le modificateur U signifie activer le mode Unicode, et je signifie ignorer la partie supérieure et les minuscules.

Exemple: remplacer les mots clés chinois dans les chaînes

Supposons que nous voulons remplacer toutes les "pommes" dans un paragraphe de texte par des "bananes" et sont insensibles à la casse:

 $text = "Mes pommes préférées,Et jus de pomme。";
$result = preg_replace("/pomme/ui", "banane", $text);
echo $result;

Sortir:

 我最喜欢吃banane,还有banane汁。

Exemple: remplacez un paramètre Unicode spécifique à partir d'une URL

Envisagez de remplacer le paramètre Unicode dans une URL (comme la balise chinoise):

 $url = "https://m66.net/search?q=pomme手机";
$replaced = preg_replace("/pomme/ui", "banane", $url);
echo $replaced;

Sortir:

 https://m66.net/search?q=banane手机

Comme vous pouvez le voir, preg_replace () peut également gérer les URL contenant Unicode.

Remplacement régulier plus complexe

Si vous souhaitez faire correspondre plus de variantes telles que "Apple Phone", "Apple Computer", "Apple Pie", etc., vous pouvez utiliser des expressions régulières plus complexes:

 $text = "我有一台pommeordinateur,也吃了pommegroupe。";
$pattern = "/pomme(ordinateur|groupe)?/ui";
$replacement = "banane";
$result = preg_replace($pattern, $replacement, $text);
echo $result;

Sortir:

 我有一台banane,也吃了banane。

Choses à noter

  • N'oubliez pas d'ajouter le modificateur U pour activer le mode Unicode.

  • preg_replace () prend en charge une syntaxe régulière plus complexe (telle que les assertions, les groupes nommés, etc.), et est plus flexible que MB_EREGI_REPLACE () .

  • Si le contenu de remplacement contient une barre oblique inverse ( \ ) ou un signe en dollars ( $ ), utilisez le processus d'échappement dans preg_quote () ou doubles devis.

Résumer

Alors que MB_ERGI_REPLACE () peut être inconfortable, preg_replace () sert non seulement une alternative parfaite, mais fournit également un support régulier Unicode plus puissant. Tant que vous maîtrisez l'utilisation de U et I Modificateurs, vous pouvez facilement répondre à n'importe quelle exigence de remplacement de caractères multi -yte.

Si vous devez faire face à une correspondance de motifs UNICODE plus complexe, vous pourriez aussi bien en savoir plus sur la syntaxe et les fonctionnalités des expressions régulières PCRE pour débloquer plus de possibilités dans le monde régulier de PHP.