让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 5.0对象模型深度探索之对象复制
Mar 27 PHP
PHP 遍历XP文件夹下所有文件
Nov 27 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP中全面阻止SQL注入式攻击分析小结
Jan 30 PHP
php实现用手机关闭计算机(电脑)的方法
Apr 22 PHP
PHP输出缓冲控制Output Control系列函数详解
Jul 02 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 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
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
zen cart新进商品的随机排序修改方法
2010/09/10 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
PHP 获取文件权限函数介绍
2013/07/11 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
jquery之Document元素选择器篇
2008/08/14 Javascript
jQuery 验证插件 Web前端设计模式(asp.net)
2010/10/17 Javascript
禁用键盘上的(全局)指定键兼容iE、Chrome、火狐
2013/05/14 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
使用Python中的cookielib模拟登录网站
2015/04/09 Python
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python按行读取文件的简单实现方法
2016/06/22 Python
Python机器学习之决策树算法
2017/12/22 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python操作日志的封装方法(两种方法)
2019/05/23 Python
python3获取url文件大小示例代码
2019/09/18 Python
8种常用的Python工具
2020/08/05 Python
爱尔兰橄榄球店:Irish Rugby Store
2019/12/05 全球购物
小学体育教学反思
2014/01/31 职场文书
班班通校本培训方案
2014/03/12 职场文书
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
师德建设实施方案
2014/03/21 职场文书
勤俭节约倡议书
2014/04/14 职场文书
合作经营协议书
2014/04/17 职场文书
预备党员群众意见
2015/06/01 职场文书
太空授课观后感
2015/06/17 职场文书