HTML - smarty - 長い文字を切り詰める
1. 概要 例題が難しいですが、長い文章を表題に使う場合とかかな・・・。 「なんとかかんとか...」とか「なんとかかんとか云々」とか末尾を省略したいときがあります。 「smarty」では、それを構文で実現できるようです。 本ページは、下記のサイトを参考にさせていただきました。 「指定の文字数で文字列を切り捨てる(truncate)」 2. 長い文字を切り詰める 参考サイトでは、基本構文は {$変数|truncate} で、この場合、80文字で切り詰めると書かれているのですが・・・。 なぜか、わたしの環境では、80文字より長い文字を書いても切り詰められませんでした。 まぁ、文字数を指定する方がいいでしょう。 文字数を指定する場合は {$変数|truncate:文字数} で指定します。 更に、末尾は、デフォルトで「...」になっていますが。 {$変数|truncate:文字数:末尾指定文字列} と記述することによって、末尾が指定した文字列になります。 $smarty->assign('iroha', 'いろはにほへと ちりぬるを'); と記述しておいて、テンプレートに {$iroha} {$iroha|truncate:6} {$iroha|truncate:6:'(云々)'} と書きましたらば、ブラウザには いろはにほへと ちりぬるを いろは... いろ(云々) と表示されます。 文字数は、バイトではなく文字数で計算しているようなのですが、2行目と3行目の文字数が異なるのは、謎です。
「指定の文字数で文字列を切り捨てる(truncate)」
{$変数|truncate}
{$変数|truncate:文字数}
{$変数|truncate:文字数:末尾指定文字列}
$smarty->assign('iroha', 'いろはにほへと ちりぬるを');
{$iroha} {$iroha|truncate:6} {$iroha|truncate:6:'(云々)'}
いろはにほへと ちりぬるを いろは... いろ(云々)