/**
 +----------------------------------------------------------
 * 字符串截取,支持中文和其他编码
 +----------------------------------------------------------
 * @static
 * @access public
 +----------------------------------------------------------
 * @param string $str 需要转换的字符串
 * @param string $start 开始位置
 * @param string $length 截取长度
 * @param string $charset 编码格式
 * @param string $suffix 截断显示字符
 +----------------------------------------------------------
 * @return string
 +----------------------------------------------------------
 */

function msubstr($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);
        if(false === $slice) {
            $slice = '';
        }
    }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截取制定长度字符串的更多相关文章

  1. 【转载】Sqlserver使用Right函数从最右边向前截取固定长度字符串

    在SQL语句查询过程中,Sqlserver支持使用LEFT().RIGHT().SUBSTRING()等几个函数对字符串进行截取操作,其中Left函数表示从开始字符向后截取多少个字符,Right函数表 ...

  2. 【转载】 Sqlserver使用Left函数从最左边开始截取固定长度字符串

    在Sqlserver数据库的字符串操作中,截取字符串是最常见的操作,sql server提供了3个常用截取字符串方法,LEFT().RIGHT().SUBSTRING(),如果从第一个字符即最左边位置 ...

  3. sql中从指定位置截取指定长度字符串

    1. 字符串函数应用 --从指定索引截取指定长度的字符串 ,) --获取字符串中指定字符的索引(从1开始) select charindex(',','ab,cdefg') --实际应用中的语句 , ...

  4. js 截取固定长度字符串但不打断单词

    适用地方:英文网站中,比如面包屑导航处新闻标题过长.用css截取文本简介时将单词打断   // 使用方法 // 1.复制下面函数 // 2.调用 // 3.填参数  sliceString(targe ...

  5. ASP.net:截取固定长度字符串显示在页面,多余部分显示为省略号

    方法一: public static string GetString(string str, int length) { int i = 0, j = 0; foreach(char chr in ...

  6. js截取固定长度字符串,多余字符显示...

    function cutstr(str, len) { var str_length = 0; var str_len = 0; str_cut = new String(); str_len = s ...

  7. asp.net截取指定长度的字符串内容

    /// <summary> /// 用于截取指定长度的字符串内容 /// </summary> /// <param name="sString"&g ...

  8. PHP计算中文字符串长度 、截取相应中文字符串

    PHP计算字符串长度     及其   截取相应中文字符串 计算字符长度: $gouWu = '美日汇http://www.hnzyxok.com/'; echo mb_strlen($gouWu,' ...

  9. CSS截取中英文混合字符串长度

    <!doctype html> <html> <head> <meta http-equiv="content-type" content ...

随机推荐

  1. sencha touch 模仿tabpanel导航栏TabBar(2013-11-7)

    基于sencha touch 2.2所写 代码: /* *模仿tabpanel导航栏 */ Ext.define('ux.TabBar', { alternateClassName: 'tabBar' ...

  2. thinkphp 构建子查询

      thinkphp构建子查询sql语句写法        从3.0版本开始新增了子查询支持,有两种使用方式: 1.使用select方法 当select方法的参数为false的时候,表示不进行查询只是 ...

  3. 更简单的调试Release版本Optimize code的.NET程序集

    由于JIT的优化在调试Release版本程序集往往没有足够的跟踪信息,比如查看clrstack发现PARAMETERS:= <no data>状态. 在程序运行目录下创建一个[程序集名称] ...

  4. 添加Net4CollectionTypeFactory的原因

    .NET4.0已经实现了该功能 http://jahav.com/blog/nhibernate-using-net-4-iset/ NHibernate using .NET 4 ISet 0 Co ...

  5. thinkCMF----如何写标签

    ThinkCMF写标签的地方:

  6. Druid的Segment Balance及其代价计算函数分析

    Balance $Cost(X, Y) $ $$ J_\alpha(x) = \sum_{m=0}^\infty \frac{(-1)^m}{m! \Gamma (m + \alpha + 1)} { ...

  7. <input type=file>上传唯一控件

    值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器 ...

  8. java cocurrent ConcurrentHashMap、读写锁、Condition、线程池、Barrier、CountDownLatch、Callable、BlockingQueue

    Java并发学习笔记 - yang_net - 博客频道 - CSDN.NET               Java并发学习笔记 - yang_net - 博客频道 - CSDN.NET 并发小结:高 ...

  9. Ball---hdu5821(排序)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5821 题意:有n个盒子,每个盒子又一个值 a[i] 如果 a[i] 大于 0 说明盒子里面有 1 个颜 ...

  10. Roadblocks--poj3255(次短路)

    题目链接 求次短路的问题: dist[i][0]和dist[i][1]表示从起点1到i的距离和从起点n到i的距离: 次短路要比最短路大但小于其他路: 每条路1--n的距离都可以用dist[i][0] ...