Maison >développement back-end >tutoriel php >Comment supprimer efficacement les caractères non imprimables des chaînes dans différents encodages de caractères ?

Comment supprimer efficacement les caractères non imprimables des chaînes dans différents encodages de caractères ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-10 19:32:11490parcourir

How to Effectively Remove Non-Printable Characters from Strings in Different Character Encodings?

Comment supprimer les caractères non imprimables d'une chaîne

Lorsque vous travaillez avec des données textuelles, il est souvent nécessaire de supprimer les caractères non imprimables pour assurer la cohérence et la lisibilité. Cela inclut les caractères de contrôle (0 à 31) et les caractères ASCII étendus (127 et plus).

ASCII 7 bits

Pour les chaînes ASCII 7 bits, vous pouvez utilisez l'expression régulière suivante pour supprimer les caractères non imprimables :

$string = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $string);

8-Bit Extended ASCII

Pour conserver les caractères compris entre 128 et 255, ajustez l'expression régulière à :

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

UTF-8

Pour Chaînes UTF-8, utilisez le modificateur /u pour s'adapter à Unicode caractères :

$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);

Alternative : str_replace

Bien que preg_replace soit généralement efficace, vous pouvez également utiliser str_replace comme suit :

// Create an array of non-printable characters
$badchars = array(
    // Control characters
    chr(0), chr(1), chr(2), chr(3), chr(4), chr(5), chr(6), chr(7), chr(8),
    chr(9), chr(10), chr(11), chr(12), chr(13), chr(14), chr(15), chr(16),
    chr(17), chr(18), chr(19), chr(20), chr(21), chr(22), chr(23), chr(24),
    chr(25), chr(26), chr(27), chr(28), chr(29), chr(30), chr(31),
    // Non-printable characters
    chr(127)
);

// Replace the bad characters
$str2 = str_replace($badchars, '', $str);

Considérations relatives aux performances

Que ce soit preg_replace ou str_replace est plus rapide en fonction de la longueur de la chaîne. Pour les chaînes courtes, preg_replace est généralement plus rapide, tandis que str_replace peut être plus efficace pour les chaînes plus longues. Une analyse comparative est recommandée pour déterminer la meilleure approche.

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