让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 xfocus防注入资料
Apr 27 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
简单的cookie计数器实现源码
Jun 07 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
Aug 06 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
php获取远程文件大小
Oct 20 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
自制PHP框架之设计模式
May 07 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
laravel 实现根据字段不同值做不同查询
Oct 23 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 session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
PHP字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
php文件上传类完整实例
2016/05/14 PHP
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
js删除Array数组中指定元素的两种方法
2016/08/03 Javascript
郁闷!ionic中获取ng-model绑定的值为undefined如何解决
2016/08/27 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
跟老齐学Python之传说中的函数编写条规
2014/10/11 Python
django 自定义用户user模型的三种方法
2014/11/18 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
棉花姑娘教学反思
2014/02/15 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
班级口号大全
2014/06/09 职场文书
中队活动总结
2014/08/27 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
汤姆叔叔的小屋读书笔记
2015/06/30 职场文书
2016年小学生寒假家长评语
2015/10/10 职场文书
实用求职信模板范文
2019/05/13 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
python3 sqlite3限制条件查询的操作
2021/04/07 Python