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!