字符截取 支持UTF8/GBK

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FengHongSeXiaoXiang/article/details/78801009
function _strcut($string, $length,$dot = '...') {
        $string = trim($string);        
        if($length && strlen($string) > $length) {   
            //截断字符   
            $wordscut = '';   
            if(strtolower('utf-8') == 'utf-8') {           
                //utf8编码   
                $n = 0;
                $tn = 0;   
                $noc = 0;   
                while ($n < strlen($string)) {   
                    $t = ord($string[$n]);   
                    if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {   
                        $tn = 1;   
                        $n++;   
                        $noc++;   
                    } elseif(194 <= $t && $t <= 223) {   
                        $tn = 2;   
                        $n += 2;   
                        $noc += 2;   
                    } elseif(224 <= $t && $t < 239) {   
                        $tn = 3;   
                        $n += 3;   
                        $noc += 2;   
                    } elseif(240 <= $t && $t <= 247) {   
                        $tn = 4;   
                        $n += 4;   
                        $noc += 2;   
                    } elseif(248 <= $t && $t <= 251) {   
                        $tn = 5;   
                        $n += 5;   
                        $noc += 2;   
                    } elseif($t == 252 || $t == 253) {   
                        $tn = 6;   
                        $n += 6;   
                        $noc += 2;   
                    } else {   
                        $n++;   
                    }   
                    if ($noc >= $length) {   
                        break;   
                    }   
                }   
                if ($noc > $length) {   
                    $n -= $tn;   
                }   
                $wordscut = substr($string, 0, $n);   
            } else {   
                for($i = 0; $i < $length - 1; $i++) {   
                    if(ord($string[$i]) > 127) {   
                        $wordscut .= $string[$i].$string[$i + 1];   
                        $i++;   
                    } else {   
                        $wordscut .= $string[$i];   
                    }   
                }   
            }   
            $string = $wordscut.$dot;
        }   
        return trim($string);
}

猜你喜欢

转载自blog.csdn.net/FengHongSeXiaoXiang/article/details/78801009