ホームページ > バックエンド開発 > PHPチュートリアル > 文字列から印刷不可能な ASCII 文字 (0 ~ 31 および 127) を効率的に削除するにはどうすればよいですか?

文字列から印刷不可能な ASCII 文字 (0 ~ 31 および 127) を効率的に削除するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-12 16:58:16
オリジナル
812 人が閲覧しました

How Can I Efficiently Remove Non-Printable ASCII Characters (0-31 and 127) from a String?

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

文字列から印刷不可能な文字を削除する必要がある状況では、さまざまなアプローチを使用できます。 。この質問は、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート