让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 相关文章推荐
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
一步一步学习PHP(5) 类和对象
Feb 16 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
Apr 20 PHP
PHP mysql与mysqli事务使用说明 分享
Aug 17 PHP
PHP贪婪算法解决0-1背包问题实例分析
Mar 23 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
Jul 01 PHP
PHP实现上传多文件示例代码
Feb 20 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
PHP实现一个轻量级容器的方法
Jan 28 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
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
php 中htmlentities导致中文无法查询问题
2018/09/10 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
JQuery给网页更换皮肤的方法
2015/05/30 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
Python while 循环使用的简单实例
2016/06/08 Python
利用Python破解验证码实例详解
2016/12/08 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
使用EduBlock轻松学习Python编程
2018/10/08 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
PyCharm永久激活方式(推荐)
2020/09/22 Python
Python生成器常见问题及解决方案
2020/03/21 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
菜篮子工程实施方案
2014/03/08 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
法定授权委托证明书
2015/06/18 职场文书
医德医风学习心得体会
2016/01/25 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
Win11应用商店打开闪退怎么解决? win11应用商店打不开的多种解决办法
2022/04/05 数码科技
python神经网络学习 使用Keras进行简单分类
2022/05/04 Python