Blogブログ

Smarty 文字列操作について

こんにちは、サポート担当の大谷です。

前回、smartyの文字幅取得、切捨てについてご紹介しました。
今回は同じくsmartyでの他の文字列操作の方法についてお話したいと思います。

私は普段サポート業務を担当している関係で、ちょこちょこsmartyに関しても触る事があるのですが、smarty側でやる事といえば、もっぱら表示する文言の変更など、文字列操作系の関数を使う事が特に多いです。

あとはif文の簡単な条件分岐だったり、配列をループさせてlistへ繰り返し表示したりといったところでしょうか。
前回の最後にも書きましたが、込み入った事はPHP側にやらせるべきなので、smarty側では簡素な処理以外はほとんど使っていません。
という事で、smarty側でよく使用する文字列操作系の関数をいくつかご紹介します。

1.文字列の連結

文字数連結には以下の関数を使用します。

{$hoge|cat:$hoge2}

 
$hogeに$hoge2を連結します。

{$hoge = 'あいう'}
{$hoge2 = 'えお'}

{$hoge|cat:$hoge2}


実行結果
あいうえお

2.文字列の置換

文字列置換には以下の関数を使用します。

{$hoge|replace:’文字列1’:’文字列2’}

 
$hogeで渡した変数内の文字列1を文字列2に置換します。

{$hoge = 'かきkuけこ'}

{$hoge|replace:'ku':'く'}


実行結果
かきくけこ

3.文字数のカウント

文字数カウントは以下の関数です。

{$hoge|strlen}

 
全角文字は3、半角は1で数えられます
ちなみに全角も1文字で数えるには以下になります。

{$hoge|mb_strlen}
{$hoge = 'さしsuせそ'}

{$hoge|strlen}
{$hoge|mb_strlen}


実行結果
14
6

3.文字列の切り捨て

文字列切捨ては以下の関数です。

{$hoge|truncate:5:false}

 
$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は文字数で数えます。ややこしい。
自分でまとめといて絶対忘れるやつですね。

ありがとうございました。

大谷

執筆者

Developer

大谷