Lors de la création d'applications Web, le traitement des entrées des utilisateurs est une tâche importante, en particulier le filtrage des mots sensibles. PHP fournit des fonctions de chaîne multi-octets, où MB_EREGI_REPLACE est un outil puissant adapté au remplacement insensible aux cas où les chaînes dans des environnements multi-lingues. Cet article expliquera comment utiliser MB_ERGI_REPLACE pour remplacer les mots sensibles dans le texte.
MB_EREGI_REPLACE est une fonction fournie par PHP Multi-Byte String Extension MBSTRING , et sa syntaxe de base est la suivante:
mb_eregi_replace(string $pattern, string $replacement, string $string, string $option = ""): string|false
$ Pattern : Expression régulière pour correspondre à la chaîne à remplacer (cas insensible).
$ Remplacement : le contenu utilisé pour le remplacement.
$ String : chaîne d'origine.
$ Option : Paramètre facultatif, utilisé pour spécifier le codage et d'autres paramètres.
Cette fonction convient au traitement des jeux de caractères multi-octets tels que UTF-8, et est idéal pour gérer le filtrage des mots sensibles chinois.
Voici un exemple simple montrant comment remplacer les mots sensibles dans une chaîne par MB_EREGI_REPLACE :
<?php
// Liste des mots sensibles
$sensitive_words = ['pari', 'pornographie', 'Violence'];
// Texte à traiter
$input_text = "Ce site Web contientparietpornographiecontenu,accéder https://m66.net/play Il y aura plus d'informations。";
// Remplacer les caractères
$replacement = '***';
// Remplacer tous les mots sensibles dans une boucle
foreach ($sensitive_words as $word) {
$input_text = mb_eregi_replace($word, $replacement, $input_text);
}
echo $input_text;
?>
Résultat de sortie:
Ce site Web contient***et***contenu,accéder https://m66.net/play Il y aura plus d'informations。
Comme indiqué ci-dessus, MB_EREGI_REPLACE remplace avec précision les mots sensibles à plusieurs gobets et laisse l'URL et d'autres contenus inchangés.
Dans les applications pratiques, les mots sensibles peuvent avoir des déformations, comme l'ajout d'espaces ou de symboles spéciaux. Nous pouvons utiliser des expressions régulières plus complexes pour améliorer la reconnaissance, par exemple:
<?php
$sensitive_words = ['pari\s*Blog', 'couleur\s*Affection', 'Brutal\s*forcer'];
$input_text = "C'est une question depari Blogcontenu,Également inclusBrutal forceretseAffection,请勿accéder http://m66.net/bad.html。";
foreach ($sensitive_words as $word) {
$pattern = $word;
$input_text = mb_eregi_replace($pattern, '***', $input_text);
}
echo $input_text;
?>
Sortir:
C'est une question de***contenu,Également inclus***et***,请勿accéder http://m66.net/bad.html。
Utilisez \ S * pour correspondre à tous les espaces afin que les mots sensibles déformés puissent également être remplacés correctement.
MB_EREGI_REPLACE a été supprimé après PHP 8.0. Il est recommandé d'utiliser preg_replace avec mb_convert_encoding pour obtenir des fonctions similaires.
Assurez-vous que l'extension MBSTRING est activée avant utilisation.
Les caractères spéciaux du modèle d'appariement doivent être échappés, sinon une erreur de correspondance régulière peut être causée.
Avec MB_ERGI_REPLACE , nous pouvons facilement obtenir un remplacement précis des mots sensibles dans des environnements multilingues. Cependant, il doit être conscient de ses problèmes de compatibilité. Il est recommandé que les nouveaux projets envisagent d'utiliser des alternatives plus modernes, comme une bibliothèque d'expression régulière qui combine Preg_replace et soutenues par Unicode. Quoi qu'il en soit, la construction d'un environnement de contenu sûr et sain est toujours une responsabilité importante de chaque développeur.