PHP按长度分割字符串成数组,及在前面进行补位。
此功能在二进制补全方式使用非常广范。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
if (!function_exists('str_cut2arr')) { /** * @param $str 字符串 * @param $filter_len 长度切割, * @param $fill_str 前面补位字符 * @param $mix_len 最小字符串长度 (不足则前面补位) * @return array */ function str_cut2arr($str, $filter_len = 1, $fill_str = '', $mix_len = 0) { $len = strlen($str); $pre_len = $len % $filter_len; $str_len = $len / $filter_len; if (strlen($fill_str) > 0) { $new_len = 0; //无最大长度,则按分割分度进行补位 if ($mix_len == 0) { if ($pre_len != 0) { // $new_len = ($str_len + 1) * $filter_len; $new_len = $len + $filter_len - $pre_len; } } else if ($mix_len > 0) { ($mix_len >= $len) && $new_len = $mix_len; } //新的长度 if ($new_len > 0) { $str = str_pad($str, $new_len, $fill_str, STR_PAD_LEFT); $len = strlen($str); $pre_len = $len % $filter_len; $str_len = $len / $filter_len; } } $arr = []; if ($pre_len > 0) { $arr[] = substr($str, 0, $pre_len); } $lastlen = $len - $pre_len; if ($lastlen > 0) { $last = substr($str, $pre_len, $lastlen); //方式一 /* $new_arr = []; $count = $lastlen / $filter_len; for ($i = 0; $i < $count; $i++) { $max_offset = $i * $filter_len; $new_arr[] = substr($last, $max_offset, $filter_len); } */ //方式二 $new_arr = str_split($last, $filter_len); if (!empty($new_arr)) { $arr = array_merge($arr, $new_arr); } } return $arr; } |
转载请注明:SKIY开发笔记 » PHP按长度分割字符串成数组