Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-30 12:33:04
original
824 Les gens l'ont consulté

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)
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal