Smartyで、文字を丸めるSmarty_modifier_mbtruncateというのを使用していたのですが、mb_structとマルチバイドのはずなのに語尾が文字化けして四角二つとかになっちゃうことがありました。

なぜかなと思いながら、他の方が作成されたSmarty_modifier_mbtruncateのコードを探していると、文字コード指定をすると直るらしい。

前に見たブログ記事が見つからなくなっちゃったので、こちらでも同じように書いていただいてるのリンク

続・Smarty truncateをマルチバイト対応に – こまちドーナツ

ちなみに私の使用しているコードはこちら

<?php
function Smarty_modifier_mbtruncate($string, $length=80, $etc=’…’, $break_words = false){
ツꀀ
ツꀀツꀀツꀀ if ($length == 0)
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ return ”;

ツꀀツꀀツꀀ if (strlen($string) > $length) {
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ $length -= strlen($etc);ツꀀ
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ if (!$break_words)
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ return mb_strcut($string, 0, $length,”UTF-8″).$etc;
ツꀀツꀀツꀀ } else
ツꀀツꀀツꀀツꀀツꀀツꀀツꀀ return $string;
}

?>