文字列から印刷不可能な文字を削除する方法
テキスト データを扱う場合、多くの場合、印刷不可能な文字を削除する必要があります。一貫性と読みやすさを確保します。これには、制御文字 (0 ~ 31) と拡張 ASCII 文字 (127 以降) が含まれます。
7 ビット ASCII
7 ビット ASCII 文字列の場合、次のことができます。印刷不可能なものを削除するには、次の正規表現を使用します。文字:
$string = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $string);
8 ビット拡張 ASCII
128 ~ 255 の範囲の文字を保持するには、正規表現を調整しますto:
$string = preg_replace('/[\x00-\x1F\x7F]/', '', $string);
UTF-8
UTF-8 文字列の場合は、/u 修飾子を使用して Unicode 文字に対応します:
$string = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $string);
代替案: str_replace
preg_replace は一般に効率的ですが、次のように str_replace を使用することもできます。
// 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);
パフォーマンスに関する考慮事項
preg_replace かどうかstr_replace の方が速いかどうかは、文字列の長さに依存します。短い文字列の場合、通常は preg_replace の方が高速ですが、長い文字列の場合は str_replace の方が効率的です。最適なアプローチを決定するには、ベンチマークを行うことをお勧めします。
以上が異なる文字エンコーディングの文字列から印刷不可能な文字を効果的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。