Smartyのtruncate効果(マルチバイト対応)を既存の文法で行う
Smartyで独自のtruncate修飾子を作るのがめんどくさい!っていう人もいるようなので、Smarty2でも3でも使えるPHPマルチバイト関数を利用した方法をお教えします。
mb_substr()関数とmb_strlen()関数の併用
例えば文字コードがUTF-8で、日本語文字列を含むテキストを80文字で省略して、続きに「…(三点リーダー)」を付加するには以下のようにします。
$str = 'あいうえお...(以下延々とマルチバイト文字)'
{$str|mb_substr:0:80:'utf-8'|escape}{if mb_strlen($str, 'utf-8') > 80} ...{/if}
標準のPHP関数はパイプを使うことで利用できますから、何か事情があってテンプレートしかいじれない人にはこの方法がいいでしょう。
独習PHP 第4版
¥1,870 (2025-04-19 06:22 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)PHP2025年5月号:心が晴れる新習慣
¥300 (2025-04-19 20:28 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)PHPスペシャル 2025年5月号:いいことが続く「運」の磨き方
2013-03-08