迅睿開源框架是一款PHP8高性能·簡單易用的PHP開源開發(fā)框架, 基于MIT開源許可協(xié)議發(fā)布,不限制商業(yè)使用,以多端互聯(lián)為設(shè)計(jì)理念, 支持的微信公眾號、小程序、APP客戶端、移動端網(wǎng)站、PC網(wǎng)站等多終端式管理系統(tǒng)。
業(yè)務(wù)經(jīng)理
微信掃描以上二維碼
028-61286886
技術(shù)咨詢
除了dr_strcut方法可以截取,適用于中文,有其它方法是自動識別中英文來截取完成的長度嗎?
config/custom.php加上我這個函數(shù),用我的函數(shù)
if (!function_exists('dr_en_strcut')) { function dr_en_strcut($str, $limit = '100', $dot = '...') { if (!$str) { return ''; } $start = 0; if ($limit && strpos((string)$limit, ',')) { list($start, $length) = explode(',', $limit); $length = (int)$length; } else { $length = (int)$limit; } if (strlen($str) <= $length || !$length) { return $str; } $res = substr($str, $start, $length); $strlen = strlen($str); if ($start >= 0) { $next_start = $start + $length; $next_len = $next_start + 6 <= $strlen ? 6 : $strlen - $next_start; $next_segm = substr($str, $next_start, $next_len); $prev_start = $start - 6 > 0 ? $start - 6 : 0; $prev_segm = substr($str, $prev_start, $start - $prev_start); } else { $next_start = $strlen + $start + $length; $next_len = $next_start + 6 <= $strlen ? 6 : $strlen - $next_start; $next_segm = substr($str, $next_start, $next_len); $start = $strlen + $start; $prev_start = $start - 6 > 0 ? $start - 6 : 0; $prev_segm = substr($str, $prev_start, $start - $prev_start); } if (preg_match('@^([x80-xBF]{0,5})[xC0-xFD]?@', $next_segm, $bytes)) { if (!empty($bytes[1])) { $bytes = $bytes[1]; $res .= $bytes; } } $ord0 = ord($res[0]); if (128 <= $ord0 && 191 >= $ord0) { if (preg_match('@[xC0-xFD][x80-xBF]{0,5}$@', $prev_segm, $bytes)) { if (!empty($bytes[0])) { $bytes = $bytes[0]; $res = $bytes . $res; } } } if (strlen($res) < $strlen) { $res = $res . $dot; } return $res; } }
config/custom.php加上我這個函數(shù),用我的函數(shù)
if (!function_exists('dr_en_strcut')) { function dr_en_strcut($str, $limit = '100', $dot = '...') { if (!$str) { return ''; } $start = 0; if ($limit && strpos((string)$limit, ',')) { list($start, $length) = explode(',', $limit); $length = (int)$length; } else { $length = (int)$limit; } if (strlen($str) <= $length || !$length) { return $str; } $res = substr($str, $start, $length); $strlen = strlen($str); if ($start >= 0) { $next_start = $start + $length; $next_len = $next_start + 6 <= $strlen ? 6 : $strlen - $next_start; $next_segm = substr($str, $next_start, $next_len); $prev_start = $start - 6 > 0 ? $start - 6 : 0; $prev_segm = substr($str, $prev_start, $start - $prev_start); } else { $next_start = $strlen + $start + $length; $next_len = $next_start + 6 <= $strlen ? 6 : $strlen - $next_start; $next_segm = substr($str, $next_start, $next_len); $start = $strlen + $start; $prev_start = $start - 6 > 0 ? $start - 6 : 0; $prev_segm = substr($str, $prev_start, $start - $prev_start); } if (preg_match('@^([x80-xBF]{0,5})[xC0-xFD]?@', $next_segm, $bytes)) { if (!empty($bytes[1])) { $bytes = $bytes[1]; $res .= $bytes; } } $ord0 = ord($res[0]); if (128 <= $ord0 && 191 >= $ord0) { if (preg_match('@[xC0-xFD][x80-xBF]{0,5}$@', $prev_segm, $bytes)) { if (!empty($bytes[0])) { $bytes = $bytes[0]; $res = $bytes . $res; } } } if (strlen($res) < $strlen) { $res = $res . $dot; } return $res; } }