素材牛

PHP截取字符串长度

 所属分类:PHP/MySql-函数/算法

 浏览:497次  下载:0次  评论:7次  发布时间:2017-08-07
PHP截取字符串长度
积分说明:注册即送5牛币,每天签到可获得5牛币,第三方账号登陆、注册直接赠送20牛币!    我要充值   更多积分说明»
素材描述:我们经常会遇到需要截取字符串(含中文汉字)长度的情况,比如标题显示不能超过多少字符,超出的长度用...表示,以下函数可以满足你的需求。

函数:

function cutStr($string, $sublen, $start = 0, $code = 'UTF-8')
{ 
    if($code == 'UTF-8')
    { 
        $pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/"; 
        preg_match_all($pa, $string, $t_string); 
 
        if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."..."; 
        return join('', array_slice($t_string[0], $start, $sublen)); 
    }
    else
    { 
        $start = $start*2; 
        $sublen = $sublen*2; 
        $strlen = strlen($string); 
        $tmpstr = ''; 
 
        for($i=0; $i<$strlen; $i++)
	{ 
            if($i>=$start && $i<($start+$sublen))
	    { 
                if(ord(substr($string, $i, 1))>129)
                { 
                    $tmpstr.= substr($string, $i, 2); 
                }
		else
		{ 
                    $tmpstr.= substr($string, $i, 1); 
                } 
            } 
            if(ord(substr($string, $i, 1))>129) $i++; 
        } 
        if(strlen($tmpstr)<$strlen ) $tmpstr.= "..."; 
        return $tmpstr; 
    } 
} 

使用方法:

Utf-8、gb2312都支持的汉字截取函数 

cut_str(字符串, 截取长度, 开始长度, 编码); 

编码默认为 utf-8 

开始长度默认为 0

讨论这个项目(7)回答他人问题或分享插件使用方法奖励牛币

Lv1 青铜

    MOMIYU
    2017年09月27日 09:03

Lv2 白银

    728739414
    2017年09月27日 21:02

    不错哦!!!!!!

    回复

Lv3 黄金

    吃葡萄的阿七
    2017年10月17日 14:38

Lv3 黄金

    okky007
    2017年10月20日 11:12

    去试试,不知道准确不准确

    回复

Lv2 白银

    人在江湖飘
    2017年12月11日 15:42

    我的锅里,这么难

    回复

Lv3 黄金

    18336357783
    2017年12月28日 10:12

Lv1 青铜

    a17805936991
    2018年01月18日 16:03
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的积分余额:0 已下载次数:0
所需牛币:1 开始下载
会员账号
会员密码
安全验证