Dans le développement de PHP, le remplacement des chaînes est une exigence commune. Surtout dans les caractères multilingues ou multi-octets, la fonction MB_ERGI_REPLACE devient un outil très pratique en raison de son bon support pour les caractères multi-octets et l'appariement insensible à la casse.
Cet article expliquera comment utiliser la fonction MB_EREGI_REPLACE pour gérer les variables PHP dans les chaînes mais pas les doubles citations ou les accolades bouclées. Et démontrer comment utiliser les variables en toute sécurité dans les opérations de remplacement.
En PHP, l'analyse variable se produit généralement en chaînes doubles citées ou contre-boucles, par exemple:
echo "Hello $name"; // Les variables seront analysées
echo "Hello {$name}"; // Les variables seront également analysées
Mais si la chaîne n'est pas enfermée en doubles guillemets ou si la variable n'est pas enveloppée dans des accolades bouclées, l'analyse ne prendra pas effet:
echo 'Hello $name'; // Sortir:Hello $name(Variable non analysée)
echo 'Hello '.$name; // correct,Les variables sont analysées comme épissage
Lorsque vous remplacez cela par MB_EREGI_REPLACE , si une variable apparaît dans le modèle de remplacement et n'est pas traitée correctement, elle peut entraîner le traitement du nom de variable comme une chaîne normale ou le résultat correspondant est incorrect.
MB_EREGI_REPLACE est une fonction qui prend en charge le remplacement régulier insensible à la casse dans la famille de fonctions de chaîne multi -yte de PHP. La définition de la fonction est la suivante:
string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msr" ] )
$ motif : modèle d'expression régulière, insensible à la casse.
$ Remplacement : chaîne remplacée, qui peut contenir des variables.
$ String : chaîne cible.
$ Option : Formez l'option, par défaut "MSR" .
Supposons que vous souhaitiez remplacer la variable $ varname dans la chaîne à sa valeur réelle, mais la chaîne d'origine n'enveloppe pas la variable avec des devis doubles ou des accolades bouclées, telles que:
$content = "C'est une variable$varNameTest";
Si vous souhaitez remplacer $ varname par mb_eregi_replace comme une valeur spécifique, telle que "m66.net" , écrivez directement:
$replacement = "m66.net";
mb_eregi_replace('\$varName', $replacement, $content);
Ici \ $ varname est le varname littéral dans l'expression régulière, remplacé par m66.net . Notez que $ doit être échappé dans la régularité.
<?php
// Chaîne cibler,Variable non enveloppée en doubles citations
$content = 'Visitez notre site:$siteName,Vivre un contenu plus excitant!';
// Le nom de variable qui doit être remplacé(Littéral)
$pattern = '\$siteName';
// La valeur réelle du remplacement
$replacement = 'm66.net';
// utilisermb_eregi_replaceFaire un remplacement,Ignorer le cas
$newContent = mb_eregi_replace($pattern, $replacement, $content);
// Sortir替换结果
echo $newContent;
?>
Résultat de sortie:
Visitez notre site:m66.net,Vivre un contenu plus excitant!
Évasion régulière : Puisque vous souhaitez correspondre au symbole $ dans la chaîne, vous devez écrire \ $ dans l'expression régulière.
Remplacement de la variable : la chaîne de remplacement peut être n'importe quelle valeur ou peut être transmise en dynamiquement.
Scénarios sans citations doubles ou accolades bouclées : correspondent directement aux noms de variables littéraux pour éviter la non-concordance.
Support multi-octets : MB_ERGI_REPLACE prend parfaitement prend en charge l'UTF-8 et d'autres encodages, adaptés aux besoins de remplacement chinois.
Lorsque la chaîne cible contient des variables PHP non comparées (telles que $ var sans doubles devis ou accolades bouclées), MB_EREGI_REPLACE peut être remplacé par la correspondance du nom de variable littérale.
Faites attention à l'évasion des expressions régulières, en particulier le symbole $ lorsque vous les utilisez.
Le contenu de remplacement peut être remplacé directement par des variables pour garantir une flexibilité dynamique.
MB_ERGI_REPLACE convient au remplacement insensible à la casse dans des environnements multi-octets.