php高效去除字符串中特定長度子串
在PHP字符串處理中,經常需要根據長度篩選子串。例如,給定一個逗號分隔的字符串,如何只保留長度在特定范圍內的子串?
例如,字符串 “1,22,333,啊,啊啊,啊啊啊,4444″,目標是保留長度大于1且小于4的子串,得到結果 “22,333,啊啊,啊啊啊”。
原始代碼存在以下問題:
- 冗余的長度計算函數: 使用自定義函數 count_strlen 計算字符串長度,增加了代碼復雜度。PHP內置函數 mb_strlen 更高效。
- 條件判斷錯誤: 原始代碼的條件判斷邏輯存在錯誤。
改進后的代碼如下:
立即學習“PHP免費學習筆記(深入)”;
<?php $str = '1,22,333,啊,啊啊,啊啊啊,4444'; $strarr = explode(',', $str); $result = array_filter($strarr, function ($s) { $len = mb_strlen($s, 'utf8'); return $len > 1 && $len < 4; }); $result = implode(',', $result); echo $result; // 輸出:22,333,啊啊,啊啊啊 ?>
此代碼使用 mb_strlen 函數正確計算UTF-8編碼字符串長度,并利用 array_filter 函數高效篩選出滿足條件的子串,最后用 implode 函數將結果重新組合成逗號分隔的字符串。 這比原始代碼更簡潔、更高效。 避免了不必要的函數調用和錯誤的邏輯判斷。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END