utf-8格式的文本在进行字符串截取时容易出现截到一部分的情况,而且容易出现乱码,这一个比较简单的函数,需要php开启mbstring扩展 

$text是要截取的文本,$length是截取的长度,$suffix表示是否截取后带省略号

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
     * 字符串截取,支持中文和其他编码
     * @static
     * @access public
     * @param string $str 需要转换的字符串
     * @param string $start 开始位置
     * @param string $length 截取长度
     * @param string $charset 编码格式
     * @param string $suffix 截断显示字符
     * @return string
     */
    staticpublicfunctionmsubstr($str,$start=0,$length,$charset="utf-8",$suffix=true) {
        if(function_exists("mb_substr"))
            $slice= mb_substr($str,$start,$length,$charset);
        elseif(function_exists('iconv_substr')) {
            $slice= iconv_substr($str,$start,$length,$charset);
        }else{
            $re['utf-8']   ="/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
            $re['gb2312'] ="/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
            $re['gbk']    ="/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
            $re['big5']   ="/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
            preg_match_all($re[$charset],$str,$match);
            $slice= join("",array_slice($match[0],$start,$length));
        }
        return$suffix?$slice.'.':$slice;
    }
转载请注明来源:一个php写的截取字符串的函数

  哈尔滨品用软件有限公司致力于为哈尔滨的中小企业制作大气、美观的优秀网站,并且能够搭建符合百度排名规范的网站基底,使您的网站无需额外费用,即可稳步提升排名至首页。欢迎体验最佳的哈尔滨网站建设