让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 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
PHP下编码转换函数mb_convert_encoding与iconv的使用说明
Dec 16 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php获取文章上一页与下一页的方法
Dec 01 PHP
php选择排序法实现数组排序实例分析
Feb 16 PHP
3种php生成唯一id的方法
Nov 23 PHP
thinkPHP模型初始化实例分析
Dec 03 PHP
详解js异步文件加载器
Jan 24 PHP
PHP7多线程搭建教程
Apr 21 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 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
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
微信企业转账之入口类分装php代码
2018/10/01 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
javascript截取字符串小结
2015/04/28 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
JavaScript中定义对象原型的两种使用方法
2016/12/15 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
javascript递归函数定义和用法示例分析
2020/07/22 Javascript
VSCode下好用的Python插件及配置
2018/04/06 Python
用uWSGI和Nginx部署Flask项目的方法示例
2019/05/05 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
怎样让char类型的东西转换成int类型
2013/12/09 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
门卫岗位安全职责
2013/12/13 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
党委干部批评与自我批评发言稿
2014/09/28 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
教师辞职书范文
2015/02/26 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
开票证明
2015/06/23 职场文书
MySQL七大JOIN的具体使用
2022/02/28 MySQL
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏