让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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
PHP通过session id 实现session共享和登录验证的代码
Jun 03 PHP
thinkphp的静态缓存用法分析
Nov 29 PHP
php实现的网络相册图片防盗链完美破解方法
Jul 01 PHP
微信公众平台开发之配置与请求
Aug 26 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
tp5实现微信小程序多图片上传到服务器功能
Jul 16 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 PHP
php常用的工具开发整理
Sep 26 PHP
PHP执行系统命令函数实例讲解
Mar 03 PHP
php去除deprecated的实例方法
Nov 17 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中常用编辑器推荐
2007/01/02 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
PHP加密技术的简单实现
2016/09/04 PHP
Js动态创建div
2008/09/25 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
解决遍历时Array.indexOf产生的性能问题
2012/07/03 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
详解vue父子组件间传值(props)
2017/06/29 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
VUE单页面切换动画代码(全网最好的切换效果)
2019/10/31 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
[42:23]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第二场 12.10
2020/12/13 DOTA
老生常谈Python进阶之装饰器
2017/05/11 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
TensorFlow——Checkpoint为模型添加检查点的实例
2020/01/21 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
python中rc1什么意思
2020/06/19 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
Tory Burch英国官方网站:美国时尚生活品牌
2017/12/06 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
就业自荐书
2013/12/05 职场文书
主管会计岗位责任制
2014/02/10 职场文书
市场营销专业求职信
2014/06/17 职场文书
企业授权委托书范本
2014/09/22 职场文书
消防安全培训工作总结
2015/10/23 职场文书