Maison  >  Article  >  développement back-end  >  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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 12:33:04753parcourir

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 personnages de contrôle

Pour cibler précisément les personnages de contrôle, une classe de caractères plus spécifique peut être utilisée :

preg_replace('/[\x00-\x1F\x7F]/', '', $input);

Cette expression fait correspondre les 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 tels que les retours chariot.

Préservation 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 son la suppression ultérieure dans PHP 7.0.0 impose 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 employé :

preg_replace('/[[:cntrl:]]/', '', $input);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn