`
gengshu1111
  • 浏览: 29158 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

截取字符串无乱码

    博客分类:
  • php
阅读更多
从uchome找出的截取函数,记下

 
function cut_str($string, $length, $dot = '...',$charset='utf-8') {
       if (strlen($string) <= $length) {
            return $string;
        }

        $strcut = '';
        if (strtolower($charset) == 'utf-8') {
            $n = $tn = $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;
            }
            $strcut = substr($string, 0, $n);
        } else {
            for ($i = 0; $i < $length - 3; $i++) {
                $strcut .= ord($string[$i]) > 127 ? $string[$i] . $string[++$i] : $string[$i];
            }
        }

        return $strcut . $dot;
    }
分享到:
评论

相关推荐

    impala中substr()截取中文字符串乱码的问题

    impala的substr()和substring()函数是不支持中文的,创建一个udf解决impala sql中substr()函数截取中文字符串乱码的问题

    C#(.net)中按字节数截取字符串最后出现乱码问题的解决

    最近需要用到按字节数截取字符串。在网上找了很多方法。 Encoding.Default.GetString采用的Default Encoding.UTF8.GetBytes采用的是utf-8编码。这样当然是乱码。尤其出现中文时候。 对这类数据处理当然要用统一的...

    delphi 实现截取字符串中中文+英文混合截取

    delphi 实现截取字符串中中文+英文混合截取,当字符串中包含中文和英文支付时,有时候会将一个中文截取1半,出现乱码。该demo能很好的解决该问题

    PHP中使用substr()截取字符串出现中文乱码问题该怎么办

    但字符串只要出现中文字符,就有可能导致PHP substr中文乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位数不准确,substr()硬生生地将一个中文字符“锯”成两半,造成断开的字符会...

    Go语言按字节截取字符串的方法

    代码如下:// 按字节截取字符串 utf-8不乱码 func SubstrByByte(str string, length int) string {  bs := []byte(str)[:length]  bl := 0  for i:=len(bs)-1; i&gt;=0; i– {  switch {  case bs[i] &gt;= 0 && bs[i...

    php截取中文字符串不乱码的方法

     //gbk编码的字符串echo mb_substr($str, 0, 1, ‘gbk’); //输出 我 mb_substr方法比substr多一个参数,用来指定字符串编码。 utf-8编码截取示例 [code]$str = ‘我abc是谁’; //utf-8编码的字符串echo mb_substr...

    SQL 截取字符串应用代码

    字符串截取函数,只限单字节字符使用(对于中文的截取时遇上奇数长度是会出现乱码,需另行处理),本函数可截取字符串指定范围内的字符。

    PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]

    在PHP中,使substr函数截取字符串末位会出现乱码,因为中文UTF-8编码,每个汉字占3字节,而GB2312占2字节,英文占1字节,截取位不准确,造成断开的字符会把其后的..拉过来一起做一个字,所以出现了乱码。

    截取中英文字符串函数

    可以截取中英文字符串,也可以含有字符,里面有好几个方法 有按字符个数截取 有按字节数来截取不会存在乱码

    解析使用substr截取UTF-8中文字符串出现乱码的问题

    本篇文章是对使用substr截取UTF-8中文字符串出现乱码的问题进行了详细的分析介绍,需要的朋友参考下

    php实现中文字符截取防乱码方法汇总

    大家在自己的程序中相信都会经常用到截取字符串吧,但是往往遇到截取中文字符串的时候会遇到乱码的问题。很是让人头疼,接下来介绍两种方法防止截取中文字符串的时候出现乱码的问题。 首先第一种,自己写好的一个...

    字符串截取之字幕滚动

    最近我正在做一个播放器,想让歌曲标题在任务栏上滚动显示,想了很久才又想到了这个字符串截取的办法,所以试了下,咦???乱码???怎么办呢???所以想了些办法让它不产生乱码,嘿嘿,并且成功啦,而且可以连续...

    Python实现简单截取中文字符串的方法

    web应用难免会截取字符串的需求,Python中截取英文很容易: &gt;&gt;&gt; s = 'abce' &gt;&gt;&gt; s[0:3] 'abc' 但是截取utf-8的中文机会截取一半导致一些不是乱码的乱码.其实utf8截取很简单,这里记下来作为备忘 #-*- coding:utf8 -*...

    php中文字符截取防乱码

    当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,在substr的结果后面补上一个chr(0),就可以...

    js截取中英文字符串、标点符号无乱码示例解读

    主要介绍了如何js截取中英文字符串、标点符号无乱码,需要的朋友可以参考下

    Python中文字符串截取问题

    web应用难免会截取字符串的需求,Python中截取英文很容易,但是截取utf-8的中文机会截取一半导致一些不是乱码的乱码.其实utf8截取很简单,这里记下来分享给大家

Global site tag (gtag.js) - Google Analytics