PHP處理字符串時,如何高效去除特定長度的部分?

PHP處理字符串時,如何高效去除特定長度的部分?

php高效去除字符串中特定長度子串

在PHP字符串處理中,經常需要根據長度篩選子串。例如,給定一個逗號分隔的字符串,如何只保留長度在特定范圍內的子串?

例如,字符串 “1,22,333,啊,啊啊,啊啊啊,4444″,目標是保留長度大于1且小于4的子串,得到結果 “22,333,啊啊,啊啊啊”。

原始代碼存在以下問題:

  1. 冗余的長度計算函數: 使用自定義函數 count_strlen 計算字符串長度,增加了代碼復雜度。PHP內置函數 mb_strlen 更高效。
  2. 條件判斷錯誤: 原始代碼的條件判斷邏輯存在錯誤。

改進后的代碼如下:

立即學習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
喜歡就支持一下吧
點贊5 分享