文字列から印刷不可能な文字を削除する
文字列から印刷不可能な文字を削除する必要がある状況では、さまざまなアプローチを使用できます。 。この質問は、0 ~ 31 および 127 の範囲の文字を削除することに焦点を当てています。
削除のオプション:
preg_replace 正規表現:
preg_replace 関数で正規表現を使用することは、カスタマイズできる汎用性の高い方法です。特定範囲への除去。例:
$string = preg_replace('/[\x00-\x1F\x7F-\xFF]/', '', $string);
この式は、指定された範囲内の文字をターゲットにし、文字列からそれらを削除します。
str_replace 文字置換:
If必要な文字は限られているため、それらの配列を作成すると正規表現を回避できます。その後、str_replace 関数を使用できます。
$badChars = [chr(0), chr(1), chr(2), ...]; $string = str_replace($badChars, '', $string);
考慮事項:
文字エンコーディング:
前述の対象範囲(0 ~ 31 および 127) は ASCII の制御文字と一致します。ただし、文字エンコーディングが異なる場合は調整が必要になる場合があります。 UTF-8 の場合、正規表現内の '/u' 修飾子により適切な一致が保証されます。
Unicode 拡張子:
UTF-8 では、追加の印刷不可能な文字が追加されます。 0 ~ 31 および 127 を超える値が存在する可能性があります。これらを処理するには、削除配列に一致しない文字を含めるか、正規表現で「/u」修飾子を使用します。
パフォーマンス ベンチマーク:
通常通常、式は効率に優れていますが、特定のシナリオでは str_replace のパフォーマンスが向上する場合があります。最適なソリューションを決定するには、処理される特定のデータを使用して両方のアプローチのベンチマークを行うことをお勧めします。
以上が文字列から印刷不可能な ASCII 文字 (0 ~ 31 および 127) を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。