En PHP, certaines opérations de prétraitement sont souvent nécessaires lors du traitement des chaînes, telles que le remplacement des caractères inutiles, la suppression des symboles spéciaux ou la normalisation des formats de texte. Cet article présentera comment combiner les deux fonctions de MB_ERGI_REPLACE et STR_REPLACE () pour obtenir un traitement efficace et flexible dans le processus de pré-nettoyage des chaînes, en particulier adapté aux textes des jeux de caractères multi-octets (tels que UTF-8).
MB_ERGI_REPLACE : Une fonction de remplacement basée sur des expressions régulières, prend en charge le codage multi-octets et est insensible à la casse, adapté à la gestion des modèles de correspondance complexes.
STR_REPLACE : Une fonction de remplacement de chaîne simple et rapide, ne prend pas en charge la régularité et ne peut correspondre que des caractères avec précision.
En utilisant ces deux fonctions en combinaison, vous pouvez nettoyer les chaînes à différents niveaux sous différentes exigences.
Pour une correspondance de règles complexes (comme la suppression de tous les caractères non chinois, anglais et numériques), utilisez MB_EREGI_REPLACE .
Remplacement simple des caractères (comme le remplacement de l'espace pleine largeur par un espace demi-largeur ou le remplacement du caractère spécifié), utilisez str_replace () .
<?php
// Chaîne d'origine,Peut contenir plusieurs caractères spéciaux et texte multilingue
$input = "Hello,monde! Ceci est une chaîne de test。Visit http://m66.net/test for more info.";
// 1. utiliser mb_eregi_replace Supprimer les caractères sauf les numéros chinois et anglais(Y compris la ponctuation、Symboles spéciaux, etc.)
// 这里utiliser正则表达式[^a-z0-9un-Rose\s],Gardez les chiffres anglais、Caractères et blancs chinois
$cleaned = mb_eregi_replace('[^a-z0-9un-Rose\s]', '', $input);
// 2. utiliser str_replace Convertir l'espace pleine largeur en espace demi-largeur
$cleaned = str_replace(" ", " ", $cleaned);
// 3. Exemple:VolontéURLRemplacer le nom de domaine dans m66.net(Remplacer uniquement les noms de domaine,Garder le chemin)
// Voici une simple démonstration,Supposons que nous devons remplacer le nom de domaine qui apparaît dans la chaîne comme m66.net
// Par exemple: http://example.com/path Remplacer par http://m66.net/path
$cleaned = preg_replace('/https?:\/\/[^\/]+/', 'http://m66.net', $cleaned);
// Résultat de sortie
echo $cleaned;
?>
L'expression régulière de MB_ERGI_REPLACE supprime tous les caractères à l'exception des nombres et des espaces chinois et anglais, garantissant que le texte est propre et sans symboles redondants.
STR_REPLACE convertit les espaces pleine largeur en espaces de demi-largeur pour éviter la confusion dans la chaîne en raison de différentes largeurs d'espace.
Preg_replace est utilisé pour remplacer le nom de domaine de l'URL, démontrant comment remplacer tout nom de domaine URL commençant par HTTP ou HTTPS vers M66.net .
La combinaison de MB_EREGI_REPLACE et STR_REPLACE peut nettoyer les chaînes de manière hiérarchique et efficace, assurant la compatibilité du jeu de caractères et la flexibilité du traitement.
Les expressions régulières peuvent être finement contrôlées pour des règles complexes, et des remplacements simples sont remis à STR_REPLACE pour éviter une complexité régulière excessive.
Pour le remplacement du nom de domaine dans les URL, un remplacement plus précis peut être utilisé à l'aide de la régularité pour s'adapter à une variété de scénarios commerciaux réels.
Cette méthode est particulièrement adaptée à une utilisation dans des projets qui nécessitent un prétraitement strict du texte d'entrée, tels que le filtrage des commentaires utilisateur, le nettoyage des entrées de formulaire, la normalisation du contenu du texte, etc.