让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 相关文章推荐
dedecms后台验证码总提示错误的解决方法
Mar 21 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
Dec 29 PHP
php新建文件自动编号的思路与实现
Jun 27 PHP
php实现邮件发送并带有附件
Jan 24 PHP
php实现面包屑导航例子分享
Dec 19 PHP
PHP会员找回密码功能的简单实现
Sep 05 PHP
phpstudy的php版本自由修改的方法
Oct 18 PHP
PHP折半(二分)查找算法实例分析
May 12 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
Sep 05 PHP
PHP explode()函数用法讲解
Feb 15 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 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版
2006/10/09 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
2014/04/04 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
Angular的$http的ajax的请求操作(推荐)
2017/01/10 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
原生JS写Ajax的请求函数功能
2017/12/22 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
Python抽象类的新写法
2015/06/18 Python
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
pandas计数 value_counts()的使用
2019/06/24 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python实现七段数码管和倒计时效果
2019/11/23 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
优秀班组长事迹
2014/05/31 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
2014法制宣传日活动总结
2014/07/09 职场文书
计生工作先进事迹
2014/08/15 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
高三英语教学计划
2015/01/23 职场文书
2015年学校安全管理工作总结
2015/05/11 职场文书
2015年社区精神文明工作总结
2015/05/26 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
python 统计代码耗时的几种方法分享
2021/04/02 Python
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android