ホームページ >バックエンド開発 >PHPチュートリアル >異なる文字エンコーディングの文字列から印刷不可能な文字を効果的に削除するにはどうすればよいですか?

異なる文字エンコーディングの文字列から印刷不可能な文字を効果的に削除するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-10 19:32:11490ブラウズ

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

文字列から印刷不可能な文字を削除する方法

テキスト データを扱う場合、多くの場合、印刷不可能な文字を削除する必要があります。一貫性と読みやすさを確保します。これには、制御文字 (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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。