让CodeIgniter的ellipsize()支持中文截断的方法


Posted in PHP onJune 12, 2014

CodeIgniter的Text Helper有一个ellipsize()方法,用来过滤HTML标签并且截断文字十分好用。但是它对中文支持的特别不好,在中文中使用就有乱码出现。

下面有网友将function ellipsize()进行了修改,使得它支持中文:

在CI 2.1.3版本中,修改ci_2.1.3\system\helpers\text_helper.php 文件

function ellipsize($codepage = 'UTF-8',
                   $str, $max_length, $position = 1, $ellipsis = '…')
{
    // Strip tags
    $str = trim(strip_tags($str));    // Is the string long enough to ellipsize?
    if (mb_strlen($str, $codepage) <= $max_length)
    {
        return $str;
    }
    $beg = mb_substr($str, 0, floor($max_length * $position), $codepage);
    $position = ($position > 1) ? 1 : $position;
    if ($position === 1)
    {
        $end = mb_substr($str, 0,
            -($max_length - mb_strlen($beg, $codepage)), $codepage);
    }
    else
    {
        $end = mb_substr($str,
            -($max_length - mb_strlen($beg, $codepage)), $max_length, $codepage);
    }
    return $beg.$ellipsis.$end;
}

这段代码主要将substr和strlen替换成了mb_substr和mb_strlen,这样就能很好的支持中文截断了。

PHP 相关文章推荐
PHP 程序授权验证开发思路
Jul 09 PHP
php实现邮件发送并带有附件
Jan 24 PHP
php实现读取超大文件的方法
Jul 28 PHP
php实现的简单美国商品税计算函数
Jul 13 PHP
CI框架整合widget(页面格局)的方法
May 17 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
php实现数组纵向转横向并过滤重复值的方法分析
May 29 PHP
thinkphp5使用无限极分类
Feb 18 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 PHP
Codeigniter实现多文件上传并创建多个缩略图
Jun 12 #PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 #PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 #PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 #PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 #PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 #PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 #PHP
You might like
使用php4加速网络传输
2006/10/09 PHP
PHP封装的非对称加密RSA算法示例
2018/05/28 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
JQuery1.6 使用方法三
2011/11/23 Javascript
js数组操作学习总结
2013/11/04 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
2015/10/28 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
javascript实现右侧弹出“分享到”窗口效果
2016/02/01 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
Javascript新手入门之字符串拼接与变量的应用
2020/12/03 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python 检查文件mime类型的方法
2018/12/08 Python
Python Web框架之Django框架cookie和session用法分析
2019/08/16 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
计算机网络专业个人的自我评价
2013/10/17 职场文书
中学生家长评语大全
2014/04/16 职场文书
活动总结怎么写
2014/04/28 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python