{$d.title|truncate:25}
我想这样让多余的标题以...显示只是truncate好像是把数字、各种字符、中文一样当做1个字符
但数字毕竟占2个才占一个中文的空间,而且有末尾的“...”,又占了3个字符的空间。
导致标题列出后层次不齐。数字多的显示很短,中文多的又会显示很长。
如何让truncate认为数字也是半个字符呢?希望高手、老鸟指教,多谢!
我想这样让多余的标题以...显示只是truncate好像是把数字、各种字符、中文一样当做1个字符
但数字毕竟占2个才占一个中文的空间,而且有末尾的“...”,又占了3个字符的空间。
导致标题列出后层次不齐。数字多的显示很短,中文多的又会显示很长。
如何让truncate认为数字也是半个字符呢?希望高手、老鸟指教,多谢!
使用方法:{$d.title|mb_truncate:25}function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...', $charset='UTF-8',
$break_words = false, $middle = false)
{
if ($length == 0)
return '';
if (mb_strlen($string) > $length) {
$length -= min($length, mb_strlen($etc));
if (!$break_words && !$middle) {
$string = preg_replace('/\s+?(\S+)?$/u', '', mb_substr($string, 0, $length+1, $charset));
}
if(!$middle) {
return mb_substr($string, 0, $length, $charset) . $etc;
} else {
return mb_substr($string, 0, $length/2, $charset) . $etc . mb_substr($string, -$length/2, (mb_strlen($string)-$length/2), $charset);
}
} else {
return $string;
}
}