Suppression des caractères de contrôle des chaînes PHP
Q : Modification de l'expression régulière pour la suppression des caractères de contrôle
Un développeur PHP a déjà utilisé l'expression suivante pour purger les caractères de contrôle comme STX d'une chaîne :
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
Cependant, le résultat était trop restrictif, soulevant la question : comment supprimer sélectivement les caractères de contrôle ?
A : Utilisation de classes de caractères spécifiques pour l'identification des caractères de contrôle
Pour cibler précisément les caractères de contrôle, une classe de caractères plus spécifique peut être utilisée :
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
Cette expression correspond aux caractères avec des codes ASCII compris dans la plage \x00-\x1F et \x7F, englobant les 32 premiers caractères et \x7F, qui inclut des caractères comme retours chariot.
Conservation des caractères essentiels tels que les sauts de ligne
Si des caractères spécifiques, tels que les sauts de ligne ou les retours chariot, doivent être conservés, leurs séquences d'échappement peuvent être exclues. :
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
Dans cette expression modifiée, \x0A (saut de ligne) et \x0D (retour chariot) sont exclus de la classe de caractères.
Syntaxe moderne et dépréciation
Il est crucial de noter que la dépréciation de ereg_replace dans PHP 5.3.0 et sa suppression ultérieure dans PHP 7.0.0 imposent l'utilisation de preg_replace sur ereg_replace.
Enfin, une classe de caractères pour les caractères de contrôle
Pour une alternative concise et portable , la classe de caractères [:cntrl:] peut être utilisée :
preg_replace('/[[:cntrl:]]/', '', $input);
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3