1.首先進入到smarty包下的plugins,復制一份modifier.truncate.php,並重命名為modifier.truncate_cn.php,把其中的smarty_modifier_truncate函數替換為下面代碼
function smarty_modifier_truncate_cn($string, $length = 80, $etc = '...', $code = 'UTF-8')
{
if ($length == 0)
return '';
if ($code == 'UTF-8') {
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/”;
}
else {
$pa = “/[\x01-\x7f]|[\xa1-\xff][\xa1-\xff]/”;
}
preg_match_all($pa, $string, $t_string);
if (count($t_string[0]) > $length)
return join(”, array_slice($t_string[0], 0, $length)) . $etc;
return join(”, array_slice($t_string[0], 0, $length)) . $etc;
}
2.在模板中使用
phpbulo.php
< phpbr />$smarty->assign(’string’, “我愛你中國”);
$smarty->display(’phpbulo.tpl’);
?>
phpbulo.tpl
{$string|truncate_cn:”10″:”…”}
第一個為截取的字符長度,第二個為後綴字符
3.其他
錯誤:(secure mode) modifier truncate_cn is not allowed
這主要是你啟用了smarty的$security功能
解決方法:
給smarty配置文件中加入允許使用的函數
$smarty->security_settings['MODIFIER_FUNCS'] = array(’truncate_cn’);