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

Barbara Streisand
發布: 2024-10-30 12:33:04
原創
753 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!