指定した長さに文字列を丸める - mb_strimwidth()
以前も同じようなことをやったのだけれど、
たしかそのときは、substr()やらstr_replace()やら使って処理した気が。
Smartyにはプラグイン関数ありましたよね。
以前からあったのか知りませんでしたが、一発で解決するPHP関数があるそうな。
string mb_strimwidth ( string $str , int $start , int $width [, string $trimmarker [, string $encoding ]] )
str
丸めたい文字列。start
開始位置のオフセット。文字列の始めからの文字数 (最初の文字は 0) です。width
丸める幅。trimmarker
丸めた後にその文字列の最後に追加される文字列。encoding
PHP Manual
encoding パラメータには文字エンコーディングを指定します。省略した場合は、 内部文字エンコーディングを使用します。
他にも調べれば色々出てきそう。