smarty截取中文乱码问题解决办法
来源:互联网 发布:c语言 match函数 编辑:程序博客网 时间:2024/06/11 23:33
网站的页面在展现时,为了美观,经常需要对一些标题的长度进行控制。在整个程序中,到处都是那忙碌的字符串截取函数,而且还可能出现中文乱码。用mb_substr()可以比较好的截取中文,但是它把中文和英文都按一个字符处理,截取的效果感觉不是太好。
如果你是用Smarty做表现层的话,可以用smarty的变量调节器truncate方法来控制字符串的长度,当然利用Smarty自己的truncate截取中文时,会出现乱码。我们可以改写它的truncate调节器,让它来帮我们截取字符串,达到一劳永逸的效果。
找到你的Smarty安装目录,打开plugins/modifier.truncate.php文件。你可以用下面的函数替换掉smarty自己的函数。
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
$break_words = false, $middle = false)
{
if ($length == 0)
return '';
if (strlen($string) > $length) {
$length -= min($length, strlen($etc));
for($i = 0; $i < $length ; $i++) {
$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
}
return $strcut.$etc;
} else {
return $string;
}
}
参数$length:为截取字符串的最大长度,默认为80字符,一个中文按2个字符计算;$etc:截取字符串时,自动附加在后面的符号。默认为(...);$break_words 本指为是否可以打断一个单词,在中文环境下,作用不大,在改写的方法中,后面两个参数不起什么作用。
最后说下使用,{$title|truncate:30:"..."} ,很简单不是?当然这30个字符的长度还包括(...),如果你不喜欢,可以自己修改上面代码中的一行。
- smarty截取中文乱码问题解决办法
- smarty截取中文乱码
- smarty截取中文字符乱码问题解决方案(兼容中英文双编码)
- smarty截取中文字符乱码问题
- Smarty截取中文乱码的解决办法
- Struts中文乱码问题解决办法
- Mysql 中文乱码问题解决办法
- freemarker 中文乱码问题解决办法
- Qt中文乱码问题解决办法
- Qt中文乱码问题解决办法
- QT中文乱码问题解决办法
- freemarker 中文乱码问题解决办法
- QT中文乱码问题解决办法
- cygwin 中文乱码问题解决办法
- MySQL中文乱码问题解决办法
- Qt中文乱码问题解决办法
- Qt中文乱码问题解决办法
- html 中文乱码问题解决办法
- Linq学习
- GDI绘制界面注意的几点
- Lesson 45 The boss's letter 老板的信
- windows + forms 混合 Authentication
- 无废话C#设计模式之一:开篇
- smarty截取中文乱码问题解决办法
- Ibatis - Cache
- 浅谈巴以冲突的原因
- 从DSPack说起
- ASP.NET AJAX 在Web开发中的应用
- 无废话C#设计模式之二:Singleton
- Select Top在不同数据库中的用法
- 无废话C#设计模式之三:Abstract Factory
- Eclipse无法自动编译 & 无JRE 工程