php 截取中文而不出现不能识别的字符

主要有两个核心方法

//mb_strwidth : 返回字符串的宽度, 多字节字符通常是单字节字符的两倍宽度
mb_strwidth ( string $str [, string $encoding = mb_internal_encoding() ] ) : int

//mb_strimwidth : 截取字符串的宽度, 
mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker = "" [, string $encoding = mb_internal_encoding() ]] ) : string

例 : 
 $str = "我是田哥11s天"; // 中文两个宽度, 数字/字母一个宽度,所以应该是13个宽度
 echo  mb_strwidth($str, "UTF-8"); 
//13


echo mb_strimwidth($str, "0", 10);
//我是田哥11

echo mb_strimwidth($str, "0", 10, "...");
//我是田...

截取一个laravel的Str类的方法

function limit($value, $limit = 100, $end = '...')
    {
        if (mb_strwidth($value, 'UTF-8') <= $limit) {
            return $value;
        }

        return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end;
    }

echo Str::limit("我是田哥11s天", 10);
//我是田哥11...
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。