支持中文和其他编码的php截取字符串函数分享(截取中文字符串)


Posted in PHP onMarch 13, 2014

简单的字符串截取方法,支持中文和其他编码,传入相对应的参数直接调用就可以了

/**
 * 字符串截取,支持中文和其他编码
 * @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 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
java EJB 加密与解密原理的一个例子
Jan 11 PHP
PHP HTML代码串 截取实现代码
Jun 29 PHP
自定义php类(查找/修改)xml文档
Mar 26 PHP
PHP批量采集下载美女图片的实现代码
Jun 03 PHP
php实例分享之html转为rtf格式
Jun 02 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
php中操作memcached缓存进行增删改查数据的实现代码
Aug 15 PHP
实例讲解yii2.0在php命令行中运行的步骤
Dec 01 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
zf框架的数据库追踪器使用示例
Mar 13 #PHP
zf框架的校验器InArray使用示例
Mar 13 #PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 #PHP
zf框架的registry(注册表)使用示例
Mar 13 #PHP
zf框架的Filter过滤器使用示例
Mar 13 #PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
Mar 13 #PHP
使用PHP导出Redis数据到另一个Redis中的代码
Mar 12 #PHP
You might like
护卫神php套件 php版本升级方法(php5.5.24)
2015/05/10 PHP
PHP常见漏洞攻击分析
2016/02/21 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
php修改数组键名的方法示例
2017/04/15 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
深入理解python多进程编程
2016/06/12 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
Python删除n行后的其他行方法
2019/01/28 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
python笔记_将循环内容在一行输出的方法
2019/08/08 Python
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
团结就是力量演讲稿
2014/05/21 职场文书
法定代表人授权委托书范本
2014/10/07 职场文书
检讨书范文大全
2015/05/07 职场文书
实习证明模板
2015/06/16 职场文书
重阳节活动主持词
2015/07/04 职场文书
运动会报道稿大全
2015/07/23 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
500字作文之难忘的同学
2019/12/20 职场文书
python中的plt.cm.Paired用法说明
2021/05/31 Python
java executor包参数处理功能 
2022/02/15 Java/Android