支持中文和其他编码的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文本操作类
Nov 25 PHP
Wordpress php 分页代码
Oct 21 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
深入php函数file_get_contents超时处理的方法详解
Jun 03 PHP
php获取文件大小的方法
Feb 26 PHP
php实现删除指定目录下相关文件的方法
Oct 20 PHP
PHP pear安装配置教程
May 14 PHP
AES加解密在php接口请求过程中的应用示例
Oct 26 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
php防止sql注入的方法详解
Feb 20 PHP
PHP实现带进度条的Ajax文件上传功能示例
Jul 02 PHP
Linux系统下安装PHP7.3版本
Jun 26 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
SONY ICF-F10中波修复记
2021/03/02 无线电
php全局变量和类配合使用深刻理解
2013/06/05 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
twig模板常用语句实例小结
2016/02/04 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
js+div实现图片滚动效果代码
2014/02/10 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
2017/02/08 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
JS实现求5的阶乘示例
2019/01/21 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
pymysql模块的操作实例
2019/12/17 Python
如何在django中运行scrapy框架
2020/04/22 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
python定义类的简单用法
2020/07/24 Python
解决Python安装cryptography报错问题
2020/09/03 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
nohup的用法
2012/11/26 面试题
优秀大学生的自我评价
2014/01/16 职场文书
《手指教学》反思
2014/02/14 职场文书
幼儿园春季开学寄语
2014/04/03 职场文书
社区国庆节活动总结
2015/03/23 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
mysql数据库如何转移到oracle
2022/12/24 MySQL