解决Smarty中truncate截取中文字符乱码问题

来源:互联网 发布:淘宝上卖的jbl音响 编辑:程序博客网 时间:2024/04/28 10:27
function smarty_modifier_truncate_utf($string, $length = 80, $etc = '...'){$result = '';$string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'utf-8');for($i = 0, $j = 0; $i < strlen($string); $i++){if($j >= $length){for($x = 0, $y = 0; $x < strlen($etc); $x++){if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')){$x += $number - 1;$y++;}else{$y += 0.5;}}$length -= $y;break;}if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')){$i += $number - 1;$j++;}else{$j += 0.5;}}for($i = 0; (($i < strlen($string)) && ($length > 0)); $i++){if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0')){if($length < 1.0){break;}$result .= substr($string, $i, $number);$length -= 1.0;$i += $number - 1;}else{$result .= substr($string, $i, 1);$length -= 0.5;}}$result = htmlentities($result, ENT_QUOTES, 'utf-8');if($i < strlen($string)){$result .= $etc;}return $result;}



新建modifier.truncate_utf.php,放入以上函数

将modifier.truncate_utf.php放在smarty的plugins目录下

模板中使用跟默认的没多大区别:<!--{$list.title|truncate_utf:10:"..":true}-->

0 0
原创粉丝点击