让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 array_flip() 删除重复数组元素专用函数
May 16 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
php调用MySQL存储过程的方法集合(推荐)
Jul 03 PHP
memcache命令启动参数中文解释
Jan 13 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
php命令行用法入门实例教程
Oct 27 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
深入浅析用PHP实现MVC
Mar 02 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
PHP高效获取远程图片尺寸和大小的实现方法
Oct 20 PHP
PHP使用pdo实现事务处理操作示例
Sep 05 PHP
Smarty模板语法详解
Jul 20 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
php中变量及部分适用方法
2008/03/27 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
2011/10/13 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
初识PHP中的Swoole
2016/04/05 PHP
PHP安装memcache扩展的步骤讲解
2019/02/14 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
浅谈基于Vue.js的移动组件库cube-ui
2017/12/20 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
jquery实现选项卡切换代码实例
2019/05/14 jQuery
vue路由中前进后退的一些事儿
2019/05/18 Javascript
JavaScript, select标签元素左右移动功能实现
2020/05/14 Javascript
[52:00]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs Optic
2018/04/02 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
Python操作csv文件实例详解
2017/07/31 Python
python set内置函数的具体使用
2019/07/02 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
小学教师的自我评价范例
2013/10/31 职场文书
学生干部培训方案
2014/06/12 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
党员民主生活会材料
2014/12/15 职场文书
2015年全国爱耳日活动总结
2015/02/27 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python