PHP 文字列から制御文字を削除する
Q: 制御文字を削除するための正規表現の変更
PHP 開発者は以前、次の式を使用して STX などの制御文字をシステムから削除しました。 string:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
しかし、結果は過度に制限されており、制御文字をどのように選択できるのかという疑問が生じました。削除?
A: 制御文字の識別に特定の文字クラスを利用する
制御文字を正確にターゲットにするには、より具体的な文字クラスを利用できます:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
これ式は、\x00-\x1F および \x7F の範囲内の ASCII コードを持つ文字と一致します。最初の 32 文字と \x7F にはキャリッジ リターンなどの文字が含まれます。
改行などの必須文字の保持
改行や復帰などの特定の文字を保持する必要がある場合、それらのエスケープ シーケンスを次のように指定できます。除外:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
この変更された式では、\x0A(ラインフィード)と\x0D(キャリッジリターン)は文字から除外されます。 class.
最新の構文と非推奨
PHP 5.3.0 での ereg_replace の非推奨とその後の PHP 7.0.0 での削除により、 ereg_replace.
に対する preg_replace の使用 最後に、制御用の文字クラス文字
簡潔で移植可能な代替手段として、文字クラス [:cntrl:] を使用できます:
preg_replace('/[[:cntrl:]]/', '', $input);
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3