让CodeIgniter的ellipsize()支持中文截断的方法
CodeIgniter的Text Helper中的ellipsize方法,原本是为了过滤HTML标签并截断文本而设计的。在面对中文时,它的表现并不理想,甚至会导致乱码的出现。这对于需要处理中文文本的我们来说,显然是个不小的困扰。但幸运的是,有开发者已经找到了解决这个问题的方法。
在CI 2.1.3版本中,我们可以修改ci_2.1.3\system\helpers\text_helper.php文件中的ellipsize函数,使其能够支持中文截断。修改的主要部分在于将原有的substr和strlen函数替换为mb_substr和mb_strlen。这是因为mb_substr和mb_strlen能够正确处理多字节字符,因此能够很好地支持中文。
具体的修改后的代码如下:
```php
function ellipsize($codepage = 'UTF-8', $str, $max_length, $position = 1, $ellipsis = '…'){
// 去除标签
$str = trim(strip_tags($str));
// 字符串是否足够长以进行省略处理
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;
}
```
经过这样的修改后,ellipsize函数就能够很好地处理包含中文的文本了。如果你的网站需要处理大量的中文文本,并且希望使用ellipsize函数进行截断处理,那么不妨试试这个修改方法。希望这篇文章能够帮助到有需要的朋友们。也欢迎大家提出宝贵的建议和反馈,一起完善和优化这个方法。记得在你的网站中合理应用这个方法,提升用户体验。同时此内容适用于参考和学习交流使用,避免商用或违法行为哦!cambrian渲染引擎的代码不在本文讨论范围内。
编程语言
- 让CodeIgniter的ellipsize()支持中文截断的方法
- windows 10下mysql 5.7.21 winx64安装配置方法图文教程
- SQL Server字符串切割函数
- jQuery学习笔记之jQuery中的$
- Yii配置与使用memcached缓存的方法
- node.js操作mongodb学习小结
- flash 报错捕获(Catch All Exception in Flash)
- phpinfo()中Loaded Configuration File(none)的解决方法
- jQuery获得document和window对象宽度和高度的方法
- 在laravel中实现ORM模型使用第二个数据库设置
- JavaScript中使用Math.PI圆周率属性的方法
- 关于laravel模板中生成URL的几种模式总结
- JS实现title标题栏文字不间断滚动显示效果
- PHP垃圾回收机制引用计数器概念分析
- 使用淘宝IP库获取用户ip地理位置
- JavaScript自定义等待wait函数实例分析