> 백엔드 개발 > PHP 튜토리얼 > smarty 关于truncate使用的有关问题

smarty 关于truncate使用的有关问题

WBOY
풀어 주다: 2016-06-13 10:24:38
원래의
1052명이 탐색했습니다.

smarty 关于truncate使用的问题
{$d.title|truncate:25}
我想这样让多余的标题以...显示

只是truncate好像是把数字、各种字符、中文一样当做1个字符
但数字毕竟占2个才占一个中文的空间,而且有末尾的“...”,又占了3个字符的空间。
导致标题列出后层次不齐。

数字多的显示很短,中文多的又会显示很长。
如何让truncate认为数字也是半个字符呢?

希望高手、老鸟指教,多谢!

------解决方案--------------------
为什么不在PHP里处理这些呢?帮顶
------解决方案--------------------
自定义截取中文的函数。
------解决方案--------------------
唉 才20分

将以下code保存为modifier.mb_truncate.php,将此php放入smarty下面的libs/plugins目录下
使用方法:{$d.title|mb_truncate:25}


PHP code
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;    }}<div class="clear">
                 
              
              
        
            </div>
로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿