"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment supprimer efficacement les caractères de contrôle des chaînes PHP ?

Comment supprimer efficacement les caractères de contrôle des chaînes PHP ?

Publié le 2024-11-12
Parcourir:449

How to Effectively Remove Control Characters from PHP Strings?

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);
Dernier tutoriel Plus>

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