Smarty の truncate を日本語対応させるプラグイン

Smarty で文字列の長さを切り詰める修正子の truncate。日本語で truncate を使うと文字化けする可能性があるので PHP 側で処理してから Smarty に渡す様にしてましたがこんなプラグインがありました。

blog.ISHINAO.net | Archives | 23 | 4月 | 2004

modifier.mbtruncate.php

<?php
function smarty_modifier_mbtruncate($string, $length = 80, $etc = '...') {
    if ($length == 0) {return '';}
    if (strlen($string) > $length) {
        $length -= strlen($etc);
        return mb_strcut($string, 0, $length).$etc;
    } else {
        return $string;
    }
}
?>

こんな感じの内容を modifier.mbtruncate.php の名前で保存して Smarty の plugins のフォルダに入れてテンプレートで{$string|mbtruncate:50}などとすれば使えます。

矢鱈プラグインを入れ過ぎると他の環境に移った際にプログラムが動かなくなった。なんてコトがありそうなんで何を入れたかちゃんとメモしとかんとね。