我们知道中文字符是两个字节长度,英文字符是一个字节,在字符串中既有英文字符又有中文字符的时候,就给截取指定长度的字符串带来了一定的难度。有可能就会截取到半个中文字符,从而出现乱码。在smarty中如何解决这个问题,以下代码为smarty中以插件形式实现该功能,用以弥补原有字符串截取插件truncate的不足。


把一下代码保存为modifier.smart_truncate_gb2312_string.php,放于smarty的plugins目录下面,用法:{[$str|smart_truncate_gb2312_string:15:"..."]},实现在字符串&str中截取15个15个中文字符,结尾跟"..."。

Code

以下代码在UTF8编码中使用,用法类似。

Code