smarty 關於truncate使用的有關問題

來源:互聯網
上載者:User
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;    }}
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.