让CodeIgniter的ellipsize()支持中文截断的方法

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,这样就能很好的支持中文截断了。

(0)

相关推荐

  • codeigniter上传图片不能正确识别图片类型问题解决方法

    在用 codeigniter 的上传类上传图片的时候,明明是 jpg 格式图片,但是 ci 始终识别成 application/octet-stream 类型,从而导致上传失败,搜集了下资料,解决方法如下: 在 php.ini 中开启 fileinfo 扩展来获取正确的类型: 复制代码 代码如下: //windows extension = php_fileinfo.dll //linux extension = fileinfo.so 注:关于fileinfo PHP官方推荐mime_cont

  • CodeIgniter错误mysql_connect(): No such file or directory解决方法

    首先CodeIgniter连接数据库连不上,总是显示连接错误,但是又没有error信息,难以debug. 解决方案是:在application/config/database.php文件的最后加上这一段代码: 复制代码 代码如下: echo '<pre>'; print_r($db['default']); echo '</pre>'; echo 'Trying to connect to database: ' .$db['default']['database']; $dbh=

  • Codeigniter中mkdir创建目录遇到权限问题和解决方法

    今天在用 Codeigniter 上传文件时(部署在 Centos),提示如下错误: A problem was encountered while attempting to move the uploaded file to the final destination. 相关代码: 复制代码 代码如下: //目录检测 if (!is_dir($cache_path)) mkdir($cache_path, '777'); 修改为如下代码既解决问题: 复制代码 代码如下: //目录检测 if

  • codeigniter框架The URI you submitted has disallowed characters错误解决方法

    CI中URI传递参数时,出现:The URI you submitted has disallowed characters.错误.原因:这是由于uri中存在CI不允许的字符. 解决办法: 在config/config.php文件中,找到 复制代码 代码如下: $config['permitted_uri_chars'] = 'a-z 0-9~%.:_/-i'; 在里面添加允许的字符.如我需要添加@符号,则可以这样: 复制代码 代码如下: $config['permitted_uri_chars

  • Codeigniter框架的更新事务(transaction)BUG及解决方法

    由于ci事务判断出错回滚的条件是语句是否执行成功,而更新操作时,就算影响的条数为0,sql语句执行的结果过仍然为1,因为它执行成功了,只是影响的条数为0. 下面介绍解决这个问题的方法: 对于一次要执行许多的语句的事务 只需在更新操作下根据影响条数是否为0来决定是否会滚即可,下面假设第二条语句为更新操作. 复制代码 代码如下: //采用 Codeigniter 事务的手动模式     $this->db->trans_strict(FALSE);     $this->db->tra

  • CodeIgniter输出中文乱码的两种解决办法

    在controller直接echo的时候,某些浏览器会出现乱码的情况.可以用下面两种方法解决: 1.常用的php的header函数 复制代码 代码如下: header("Content-type:text/html;charset=utf-8"); 示例: 复制代码 代码如下: <?phpclass home extends CI_Controller { function index() { //设置编码 header("Content-type:text/html;

  • Codeigniter购物车类不能添加中文的解决方法

    本文实例讲述了Codeigniter购物车类不能添加中文的解决方法.分享给大家供大家参考.具体分析如下: 有朋友可能会发现Codeigniter 购物车类不能添加中文,我找了N久才发现下面一段代码限制了输入中文了,修改systemlibrariesCart.php,注释第186-190行产品名称的判断,代码如下: 复制代码 代码如下: if ( ! preg_match("/^[".$this->product_name_rules."]+$/i", $ite

  • 让CodeIgniter的ellipsize()支持中文截断的方法

    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',            

  • Flask 让jsonify返回的json串支持中文显示的方法

    用flask时遇到了返回字符串支持中文显示的问题,在web端显示的是utf-8的编码,而不是中文,如下图. 虽然不影响接口的读取,但是可读性太差,于是研究了一下怎么直接显示成中文.最后找到了解决方案如下,在配置中加入下面一行代码就OK了. app.config['JSON_AS_ASCII'] = False json.dumps()解决同样的问题可以加入ensure_ascii=False 参考资料: http://stackoverflow.com/questions/37531067/py

  • JS字符串长度判断,超出进行自动截取的实例(支持中文)

    今天一个小弟问我的问题,在文本框中输入字符,如果超出指定长度,就把它截取,要求中文等于两个字符的长度,我找一下资料,把这个功能实现了, 下面是JS代码: <html> <script src="http://jb51.net/script/jquery.js" type="text/javascript"></script> <body> <input type="text" name=&qu

  • 解决Java原生压缩组件不支持中文文件名乱码的问题

    最近发现Java原生的Zip压缩组件在压缩过程中,不支持文件名的中文编码,会在压缩过程中把中文文件名变成乱码.Apache的ant包中的压缩组件修复了这个问题,如果你在使用压缩功能时需要支持中文文件名,建议你直接使用Apache的压缩组件来实现这个功能. 具体使用方法: 1.在你的pom文件中增加对Apache的ant工具包的dependency: <dependency> <groupId>org.apache.ant</groupId> <artifactId

  • JS导出PDF插件的方法(支持中文、图片使用路径)

    在WEB上想做一个导出PDF的功能,发现jsPDF比较多人推荐,遗憾的是不支持中文,最后找到pdfmake,很好地解决了此问题.它的效果可以先到http://pdfmake.org/playground.html查看.在使用过程中,还发现图片的插入是相对繁琐的一件事. 针对这些问题,本文的主要内容可分为三部分: •pdfmake的基本使用方法: •如何解决中文问题; •如何通过指定图片地址插入图片. pdfmake的基本使用方法 1.包含以下两个文件 <script src="build/

  • php实现支持中文的文件下载功能示例

    前言 本文主要给大家介绍了关于php实现支持中文的文件下载功能的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 问题说明 文件下载,通常有一种最为简单的方法,那就是将url直接指向服务器上文件的所在位置.但是这个方法存在很大的安全隐患. 暴露了服务器文件目录结构 无法禁止非法请求来源,无法对文件下载请求做安全验证 解决方案 一.将文件下载请求映射到后端程序url 借助http服务器(apache/nginx)实现映射功能 这里以apache为例进行说明 借助apach

  • php支持中文字符串分割的函数

    str_split不支持中文,利用mb_xx函数实现个 /** * Convert a string to an array * @param string $str * @param number $split_length * @return multitype:string */ function mb_str_split($str,$split_length=1,$charset="UTF-8"){ if(func_num_args()==1){ return preg_spl

  • php使用iconv中文截断问题的解决方法

    本文实例讲述了php使用iconv中文截断问题的解决方法.分享给大家供大家参考.具体分析如下: 今天做了一个采集程序,原理很简单,使用curl方法把对方页面的html获取分析,然后正则提取需要的数据并保存在数据库. 由于对方页面是GB2312编码,而本地使用的是UTF-8编码.因此在采集后需要进行编码转换. 使用了iconv方法进行编码转换 iconv - 字符串按要求的字符编码来转换  string iconv ( string $in_charset , string $out_charse

  • 修改了一个很不错的php验证码(支持中文)

    php英文验证码captcha.class.php 复制代码 代码如下: <?php class Captcha { private $width; private $height; private $codeNum; private $code; private $im; function __construct($width=80, $height=20, $codeNum=4) { $this->width = $width; $this->height = $height; $t

随机推荐