從PHP 字串中剝離控製字元
Q:修改正規表示式以刪除控製字元
]一位PHP 開發人員先前使用下列表達式從字串中清除STX等控製字元:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
但是結果限制性過大,引發了一個問題:如何選擇性地刪除控製字元? :利用特定的字符類別進行控製字符識別
為了精確定位控製字符,可以使用更特定的字符類:
preg_replace('/[\x00-\x1F\ x7F]/', '', $input);此表達式符合\x00-\x1F 和\x7F 範圍內ASCII代碼的字符,包含前 32 個字符和\x7F,其中包括類似字符preg_replace('/[\x00-\x1F\x7F]/', '', $input);
保留換行符等基本字符
如果需要保留特定字符,例如換行符或回車符,則可以排除它們的轉義序列:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);在此修改後的表達式中, \x0A(換行符號)和\x0D(回車符)被排除在字元類別之外。preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);值得注意的是,棄用PHP 5.3.0 中的ereg_replace 以及隨後在PHP 7.0.0 中的刪除要求使用preg_replace 而不是ereg_replace。 ]:
preg_replace('/[[:cntrl:]]/', '', $input);
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3