找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1677|回复: 0
打印 上一主题 下一主题

PHP UTF8中文字符截断函数代码

[复制链接]

2617

主题

2617

帖子

7789

积分

论坛元老

Rank: 8Rank: 8

积分
7789
跳转到指定楼层
楼主
发表于 2018-2-14 08:27:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            php中英文混合字符截断不乱码函数(utf8)
[U]复制代码[/U] 代码如下:
//utf8格式下的中文字符截断
//$sourcestr 是要处理的字符串
//$cutlength 为截取的长度(即字数)
//$addstr 超过长度时在尾处加上的字符
function cut_str($sourcestr, $cutlength, $addstr='...'){
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n=224){ //如果ASCII位高与224,
   $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
   $i=$i+3; //实际Byte计为3
   $n++; //字串长度计1
  }elseif ($ascnum>=192){ //如果ASCII位高与192,
   $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
   $i=$i+2; //实际Byte计为2
   $n++; //字串长度计1
  }elseif ($ascnum>=65 && $ascnum$cutlength){
  $returnstr = $returnstr . $addstr;//超过长度时在尾处加上的字符
}
return $returnstr;
}
[U]复制代码[/U] 代码如下:
$all_len)
{
return $str;
}
for($i = 0;$i  127)
{
$i += 3;
}else{
$i += 1;
}
$cur_len ++;
}
$start_pos = $i;
$temp_pos = $cur_len;
for(;$cur_len - $temp_pos = $all_len)
break;
if (ord($str[$i]) > 127)
{
$i += 3;
}else{
$i += 1;
}
$cur_len ++;
}
$end_pos = $i;
return substr($str,$start_pos,$end_pos);
}
?>

其实,PHP原生就有多charset下字符截取方案,额,所以就是这个样子...囧..
Multibyte String Functions函数族中,
string mb_substr ( string $str , int $start [, int $length [, string $encoding ]] ) 用来字符串截取
int mb_strlen ( string $str [, string $encoding ] ) 返回字符串长度
....
详细请查看PHP手册
            
            
您可能感兴趣的文章:
  • MSSQL 将截断字符串或二进制数据问题的解决方法
  • PHP在字符断点处截断文字的实现代码
  • js中根据字数截取字符串,不能截断url
  • C# double和decimal数据类型以截断的方式保留指定的小数位数
  • c#完美截断字符串代码(中文+非中文)
  • oracle中截断表的使用介绍
  • PHP截断标题且兼容utf8和gb2312编码
  • PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
  • php使用iconv中文截断问题的解决方法
  • js实现文字截断功能
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端