首頁  >  文章  >  後端開發  >  如何有效地從 PHP 字串中刪除控製字元?

如何有效地從 PHP 字串中刪除控製字元?

Barbara Streisand
Barbara Streisand原創
2024-10-30 12:33:04757瀏覽

How to Effectively Remove Control Characters from PHP Strings?

從PHP 字串中剝離控製字元

問題:修改正規表示式以刪除控製字元

之前有位PHP 開發者使用下面的表達式來清除字串中的STX 等控製字元:

preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)

但是,結果過於嚴格,引發了一個問題:如何選擇性地刪除控製字元?

A:利用特定字符類進行控製字符識別

為了精確定位控製字符,可以使用更特定的字符類:

preg_replace('/[\x00-\x1F\x7F]/', '', $input);

此表達式匹配ASCII 代碼在x00-x1F 和x7F 範圍內的字符,包括前32 個字符和x7F,其中包括回車符等字符。

保留換行符等基本字符

如果需要保留特定字符,例如換行符或回車符,則可以排除它們的轉義序列:

preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);

在此修改後的表達式中,x0A(換行符)和x0D (回車)被排除在字元類別之外。

現代語法和棄用

需要注意的是PHP 5.3.0 及其版本中ereg_replace 的棄用PHP 7.0.0 中的後續刪除要求使用preg_replace而不是ereg_replace。

最後,控製字元的字元類別

為了簡潔且可移植的替代方案,字元類別 [:cntrl:]可以就業:

preg_replace('/[[:cntrl:]]/', '', $input);

以上是如何有效地從 PHP 字串中刪除控製字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn