让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中的时间显示
Jan 18 PHP
php为什么选mysql作为数据库? Mysql 创建用户方法
Jul 02 PHP
php 验证码实例代码
Jun 01 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
php实现在线生成条形码示例分享(条形码生成器)
Dec 30 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
php单元测试phpunit入门实例教程
Nov 17 PHP
PHP实现微信退款的方法示例
Mar 26 PHP
php常用的工具开发整理
Sep 26 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
Feb 11 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递归实现无限分类的方法
2015/07/28 PHP
PHP异常类及异常处理操作实例详解
2018/12/19 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
js实现简单模态窗口,背景灰显
2008/11/14 Javascript
斜45度寻路实现函数
2009/08/20 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
JQuery教学之性能优化
2014/05/14 Javascript
JS判断浏览器是否支持某一个CSS3属性的方法
2014/10/17 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
JS端基于download.js实现图片、视频时直接下载而不是打开预览
2020/05/09 Javascript
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
python 读取excel文件生成sql文件实例详解
2017/05/12 Python
简单了解python模块概念
2018/01/11 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
django基于cors解决跨域请求问题详解
2019/08/06 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
上海方立数码笔试题
2013/10/18 面试题
经理秘书岗位职责
2013/11/14 职场文书
试用期转正鉴定评语
2014/01/27 职场文书
高中打架检讨书
2014/02/13 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
团拜会策划方案
2014/06/07 职场文书
2019个人工作总结
2019/06/21 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android