tetsunosukeのnotebook

tetsunosukeのメモです

Smartyのmodifier(mb_strimwidth)がないので作る。

SmartyでオリジナルのテンプレートModifierを作る方法のメモ

参考にstrip_tagsを見るとこんな。

function smarty_modifier_strip_tags($string, $replace_with_space = true)
{
    if ($replace_with_space)
        return preg_replace('!<[^>]*?>!', ' ', $string);
    else
        return strip_tags($string);
}

ってことは普通に

function smarty_modifier_mb_strimwidth($string, $start = 0, $width, $trimmarker)
{
   return mb_strimwidth($string, $start,$width, $trimmarker);
}

ってな感じにすればいいのか。ふむふむ。

使い方は

{ $somestring|mb_strimwidth:30:"..."}

みたいに書けばいいみたいよ。

っていうか普通に関数でreturnするだけなら"register_modifier"使えばいいっぽい。

新規で作るよりもマルチバイトを意識しないのであれば"truncate"を使ったほうがよいのでしょうね。