こんにちは、サポート担当の大谷です。
前回、smartyの文字幅取得、切捨てについてご紹介しました。
今回は同じくsmartyでの他の文字列操作の方法についてお話したいと思います。
私は普段サポート業務を担当している関係で、ちょこちょこsmartyに関しても触る事があるのですが、smarty側でやる事といえば、もっぱら表示する文言の変更など、文字列操作系の関数を使う事が特に多いです。
あとはif文の簡単な条件分岐だったり、配列をループさせてlistへ繰り返し表示したりといったところでしょうか。
前回の最後にも書きましたが、込み入った事はPHP側にやらせるべきなので、smarty側では簡素な処理以外はほとんど使っていません。
という事で、smarty側でよく使用する文字列操作系の関数をいくつかご紹介します。
1.文字列の連結
文字数連結には以下の関数を使用します。
$hogeに$hoge2を連結します。
{$hoge = 'あいう'} {$hoge2 = 'えお'} {$hoge|cat:$hoge2} 実行結果 あいうえお
2.文字列の置換
文字列置換には以下の関数を使用します。
$hogeで渡した変数内の文字列1を文字列2に置換します。
{$hoge = 'かきkuけこ'} {$hoge|replace:'ku':'く'} 実行結果 かきくけこ
3.文字数のカウント
文字数カウントは以下の関数です。
全角文字は3、半角は1で数えられます
ちなみに全角も1文字で数えるには以下になります。
{$hoge = 'さしsuせそ'} {$hoge|strlen} {$hoge|mb_strlen} 実行結果 14 6
3.文字列の切り捨て
文字列切捨ては以下の関数です。
$hogeを5文字目で切捨てます。
切捨て後に…を付ける場合は第2引数の:falseを省きます。
この場合、代わりに付く…を含めて5文字の表示となります。
第2引数に文字列を指定する事で、指定した文字列を表示する事もできます。
{$hoge = 'さしsuせそ'} {$hoge|truncate:5:false} {$hoge|truncate:5} {$hoge|truncate:5:"~"} 実行結果 さしsuせ さし... さしsu~
前回説明したmb_strimwidthとは少し違いますね。
mb_strimwidthは文字幅で数えますが、このtruncateは文字数で数えます。ややこしい。
自分でまとめといて絶対忘れるやつですね。
ありがとうございました。