支持中文和其他编码的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 相关文章推荐
PHP 将图片按创建时间进行分类存储的实现代码
Jan 05 PHP
php 魔术函数使用说明
Feb 21 PHP
php中防止恶意刷新页面的代码小结
Oct 31 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
Apr 08 PHP
Laravel 5 框架入门(三)
Apr 09 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
Zend Framework连接Mysql数据库实例分析
Mar 19 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
Jun 29 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
PHP实时统计中文字数和区别
Feb 28 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
我的论坛源代码(六)
2006/10/09 PHP
php 常用算法和时间复杂度
2013/07/01 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
ECMAScript6中Set/WeakSet详解
2015/06/12 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
遮罩层点击按钮弹出并且具有拖动和关闭效果(两种方法)
2015/08/20 Javascript
Angular2 多级注入器详解及实例
2016/10/30 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
Vue.js的动态组件模板的实现
2018/11/26 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
2019/04/02 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
使用 js 简单的实现 bind、call 、aplly代码实例
2019/09/07 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
[04:23]DOTA2上海特锦赛小组赛第一日 TOP10精彩集锦
2016/02/27 DOTA
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
python爬取淘宝商品销量信息
2018/11/16 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
威尔逊皮革:Wilsons Leather
2018/12/07 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
机电一体化毕业生求职信
2013/11/02 职场文书
大学生志愿者感言
2014/01/15 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
学雷锋日活动总结
2015/02/06 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
go goth封装第三方认证库示例详解
2022/08/14 Golang