Position actuelle: Accueil> Derniers articles> Comment supprimer les espaces avant et après le remplacement par Trim () lors de l'utilisation de MB_ERGI_REPLACE?

Comment supprimer les espaces avant et après le remplacement par Trim () lors de l'utilisation de MB_ERGI_REPLACE?

M66 2025-06-23

MB_EREGI_REPLACE () est une fonction très utile lorsqu'il traite des chaînes de multi-gyte en PHP. Il fonctionne similaire à eregi_replace () , mais est spécifiquement utilisé pour les chaînes de multi-giréte telles que le texte chinois codé UTF-8. Cependant, dans une utilisation réelle, nous pouvons rencontrer un problème commun: comment pouvons-nous supprimer les espaces supplémentaires qui peuvent apparaître avant et après le remplacement tout en utilisant MB_EREGI_REPLACE () ?

Par exemple, supposons que nous voulons remplacer [URL] http://m66.net/page [/ url] dans le texte par une liaison HTML, tout en garantissant que le résultat de remplacement ne sera pas affecté par les espaces avant et arrière ou apporté des espaces supplémentaires. À ce moment, Trim () peut être utile.

Exemple: utilisation de base

Regardons d'abord un exemple de remplacement de base:

<code> $ text = "Voici un lien: [url] http://m66.net/page [/ url], veuillez cliquer.";

$ Pattern = ' U R L URL (. *?) / U R L /URL ';
$ remplacement = '<a href = "\ 1"> lien </a>';

$ result = mb_eregi_replace ($ motif, $ remplacement, $ text);

Echo $ Résultat;
</code>

Le résultat de la sortie est:

 Voici un lien:<a href="http://m66.net/page">Lien</a> ,Veuillez cliquer。

De la surface, cela semble bien, mais s'il y a des espaces avant et après le contenu au milieu de la balise [URL] , par exemple:

 [URL] http://m66.net/page [/URL]

L'attribut HREF dans le lien HTML après le remplacement contiendra des espaces supplémentaires, ce qui peut faire en sorte que le lien ne s'ouvre pas correctement ou affiche des exceptions.

Amélioration: utilisée en combinaison avec TRIM ()

Pour résoudre ce problème, nous devons utiliser TRIM () dans la fonction de rappel. Malheureusement, MB_EREGI_REPLACE () ne prend pas directement en charge les fonctions de rappel. Mais nous pouvons utiliser MB_EREG_REPLACE_CALLBACK () pour atteindre le même objectif.

Le code modifié est le suivant:

<code> $ text = "Voici un lien: [url] http://m66.net/page [/ url], veuillez cliquer.";

$ Pattern = ' U R L URL (. *?) / U R L /URL ';

$ result = mb_ereg_replace_callback (
$ motif,
fonction ($ correspond) {
$ url = trim ($ correspond [1]);
return '<a href = "'. $ url. '"> lien </a>';
},
$ texte
));

Echo $ Résultat;
</code>

La sortie deviendra:

 Voici un lien:<a href="http://m66.net/page">Lien</a> ,Veuillez cliquer。

Cette fois, il n'y aura pas d'espaces supplémentaires dans le lien, et les performances seront plus stables et professionnelles.

Résumer

Bien que MB_ERGI_REPLACE () soit pratique lors de la gestion des remplacements multi-octets insensibles à la caisse, il ne peut pas transmettre une logique personnalisée comme le fait preg_replace_callback () . Pour résoudre le problème de l'espace, la meilleure pratique consiste à utiliser MB_ERG_REPLACE_CALLBACK () , qui peut utiliser des fonctions de traitement de chaîne telles que TRIM () pour réaliser un traitement plus flexible des résultats correspondants. De cette façon, nous pouvons nous assurer que les liens de sortie ou tout autre contenu de remplacement sont plus précis, robustes et améliorer l'expérience utilisateur globale.