Lorsque vous traitez avec des chaînes mulabytets (telles que l'UTF-8 chinois codées, japonaises, coréennes, etc.), les fonctions d'expression régulière standard peuvent ne pas gérer correctement les problèmes de jeu de caractères. Pour résoudre ce problème, PHP fournit un ensemble de fonctions de chaîne multi -yte, dont MB_EREGI_REPLACE . Cet article expliquera comment utiliser cette fonction pour remplacer tous les nombres dans une chaîne par des caractères spécifiés, tels qu'un astérisque ( * ).
MB_EREGI_REPLACE est l'une des fonctions d'extension de chaîne multipyte de PHP. Il fonctionne similaire à eregi_replace , mais il peut gérer correctement les caractères multi -yte. La syntaxe de base est la suivante:
string mb_eregi_replace ( string $pattern , string $replacement , string $string [, string $option = "msri" ] )
Description du paramètre:
$ Pattern : l'expression régulière à correspondre.
$ Remplacement : une chaîne utilisée pour remplacer le contenu correspondant.
$ String : la chaîne cible à traiter.
$ Option (Facultatif): Match Option, qui inclut plusieurs lignes ( M ), DOT correspondant aux nouvelles lignes , ignorant le cas ( i ), etc. par défaut.
?? Remarque: La fonction MB_EREGI_REPLACE a été supprimée dans PHP 7.0.0 et n'est pas recommandée pour une utilisation dans de nouveaux projets. Si vous utilisez toujours PHP 5.x, vous pouvez l'utiliser; Sinon, vous devriez utiliser Preg_replace à la place.
Supposons que nous ayons la chaîne suivante:
$str = "utilisateurIDOui12345,验证码Oui67890";
Nous voulons remplacer tous les nombres par * , nous pouvons utiliser le code suivant:
<?php
mb_internal_encoding("UTF-8"); // Définir le codage interne
$str = "utilisateurIDOui12345,验证码Oui67890";
// utiliser mb_eregi_replace Remplacer tous les nombres
$result = mb_eregi_replace("[0-9]", "*", $str);
echo $result;
?>
Le résultat de la sortie est:
utilisateurIDOui*****,验证码Oui*****
Dans cet exemple, [0-9] signifie correspondre à n'importe quel numéro à un bits. Si vous souhaitez faire correspondre plusieurs chiffres et les remplacer par un astérisque, vous pouvez utiliser le modèle suivant:
$result = mb_eregi_replace("[0-9]+", "*", $str);
Sortir:
utilisateurIDOui*,验证码Oui*
Étant donné que MB_EREGI_REPLACE a été abandonné dans des versions plus récentes, il est recommandé d'utiliser Preg_replace :
<?php
$str = "utilisateurIDOui12345,验证码Oui67890";
$result = preg_replace("/\d+/", "*", $str);
echo $result;
?>
Preg_replace est une fonction d'expression régulière basée sur PCRE qui prend également en charge UTF-8. Assurez-vous simplement d'utiliser le modificateur U :
$result = preg_replace("/\d+/u", "*", $str);
Ce remplacement du nombre est souvent utilisé pour:
Désensibilisation aux données : masquez des informations sensibles telles que le numéro d'identification et le numéro de téléphone mobile.
Filtrage du journal : empêche les nombres de fuir les informations de débogage.
Embellissement de l'interface : convertissez les nombres en espaces réservés visuels tels que * ou ?.
Par exemple, dans une interface de protection des informations utilisateur fournie par m66.net, une méthode similaire est utilisée pour traiter les chaînes d'entrée pour protéger la confidentialité des utilisateurs.
Bien que MB_EREGI_REPLACE fournit un support multi -yte puissant dans les versions plus anciennes de PHP, depuis son abandon, les développeurs sont invités à utiliser Preg_replace dans de nouveaux projets et à incorporer des modificateurs Unicode. Peu importe la méthode utilisée, le nombre dans la chaîne peut être remplacé de manière flexible pour répondre aux deux exigences de sécurité et d'esthétique.