2016 10,26 18:51 |
|
Smartyで、表示させている文章が長いので、
よくある「...」と続く文字を入れて、一定文章を短くしたかったのだけど 少し嵌ったので、記載 | substr : 0:100 みたいにやってみたけど、文字化けなどが発生 色々調べてみたら、なるほど!っていう方法 truncate 修正子を使うといいよ!と truncate は、文字列を指定の文字数までで切ってくれます。切った後につける文字列も指定できるので、
$smarty->assign('string', 'abcdefghijklmnopqrstuvwxyz');
{$string|truncate:5:"..."}
などとすれば、文字列は 5 つめで切り捨てられ 「abcde...」と表示される
でも、日本語では化けると ってことで、smartyのpluginを作っちゃえということらしい function smarty_modifier_mb_truncate($string, $length = 80, $etc = '...') {
if ($length == 0) {return '';}
if (mb_strlen($string) > $length) {
return mb_substr($string, 0, $length).$etc;
} else {
return $string;
}
}
これを「modifier.mb_truncate.php」という名前で保存し、「smarty/libs/plugins」の中に放り込めば、テンプレート内で
{$string|mb_truncate:5:"..."}
このように使用する
でも、私の場合、これでお文字化けをしたなので、 mb_internal_encoding("UTF-8"); を smarty_modifier_mb_truncate内の一番最初で処理させたら、OK~! 素晴らしく簡単にしてくれました。ありがたや 参考サイト PR |
|
コメント |
コメント投稿 |
|
忍者ブログ [PR] |