[Smarty]数値・日付の表示を変更する。

変数をテンプレート側で整形しないといけない場面も少なくありません。 画像管理を001,002など3桁にしたいだとかファイル名とか。 スコア表示をマックスの桁数まで表示させたいとか。 Smartyテンプレート側で使用できる […]

変数をテンプレート側で整形しないといけない場面も少なくありません。
画像管理を001,002など3桁にしたいだとかファイル名とか。
スコア表示をマックスの桁数まで表示させたいとか。
Smartyテンプレート側で使用できる変数の修飾子について紹介したいと思います。

string_format–変数の数字を変える

$numという変数の中身が2.4362だったとします。

{$num}
{$num|string_format:"%.2f"}
{$num|string_format:"%03d"}
{$num|string_format:"%02d"}
{$num|string_format:"%d"}

実際の表示

2.4362
2.43
002
02
2

頭に0をつける用法は結構使うのではないでしょうか。あとは整数にするときとか。
数値を計算して整数にしたいときなど便利です。
後ろの%.2fとかは型指定子です。
参考⇒http://php.net/sprintf

型指定子

% - パーセント文字。引数は不要です。
b - 引数を整数として扱い、 2 進数として表現します。
c - 引数を整数として扱い、その ASCII 値の文字として表現します。
d - 引数を整数として扱い、 10 進数として表現します。
e - 引数を科学記法として扱います (例 1.2e+2)。 精度の指定子は、PHP 5.2.1 以降では小数点以下の桁数を表します。 それより前のバージョンでは、有効数字の桁数 (ひとつ小さい値) を意味していました。
E - %e と同じですが、 大文字を使います (例 1.2E+2)。
f - 引数を double として扱い、 浮動小数点数として表現します。
F - 引数を float として扱い、 浮動小数点数として表現します (ロケールに依存しません)。 PHP 4.3.10 および PHP 5.0.3 以降で使用可能です。
g - %e および %f の短縮形。
G - %E および %f の短縮形。
o - 引数を整数として扱い、 8 進数として表現します。
s - 引数を文字列として扱い、表現します。
u - 引数を整数として扱い、符号無しの 10 進数として表現します。
x - 引数を整数として扱い、16 進数として (小文字で)表現します。
X - 引数を整数として扱い、16 進数として (大文字で)表現します。

date_format–日付の整形する

日付とか時間を整形します。smarty.nowは現在時刻を表す予約変数です。

{$smarty.now|date_format:"%H:%M:%S"}
{$smarty.now|date_format:"%H時%M分"}

これらは下記のように表示されます。

09:45:30
09時45分

"%H:%M:%S"の部分で表示形式を指定しています。
参考⇒http://www.smarty.net/docsv2/ja/language.modifier.date.format.tpl

date_format変換指定子

%a - 現在のロケールに基づく短縮された曜日の名前
%A - 現在のロケールに基づく完全な曜日の名前
%b - 現在のロケールに基づく短縮された月の名前
%B - 現在のロケールに基づく完全な月の名前
%c - 現在のロケールに基づく適当な日付と時間の表現
%C - 世紀(年を100で割り、整数に丸めたもの。00から99)
%d - 10進数の日付(01から31)
%D - %m/%d/%yと同じ
%e - 月単位の日付を10進数で表したもの。日付が1桁の場合は、前に空白を一つ付ける。('1'から'31')
%g - 西暦の下二桁 [00,99]
%G - 西暦 [0000,9999]
%h - %bと同じ。
%H - 時間を24時間表示の10進数で(00から23まで)
%I - 時間を12時間表示の10進数で(01から12までの範囲)
%j - 年間での日付を10進数で表現 (001から366)
%k - 24時間表示の時間の一桁目に空白を入れる ( 0 から 23までの範囲)
%l - 12時間表示の時間の一桁目に空白を入れる ( 1 から 12までの範囲)
%m - 月を10進数で表現 (01から12)
%M - 分を10進数で表現
%n - 改行文字
%p - 指定した時間により `am' または `pm' 、または 現在のロケールに対応した文字列
%r - a.m.およびp.m.表記で表した時間
%R - 24時間表記で表した時間
%S - 10進数で表した秒
%t - タブ文字
%T - 現在の時間。%H:%M:%Sに等しい。
%u - 10進数表記の曜日で[1,7]の範囲。1が月曜日。
%U - 年間で何番目の週であるかを 10 進数で表現。年間で最初の日曜を最初の週の最初の日として数えます。
%V - ISO 8601:1988で規定された現在の年の週番号の10進数表現で 01から53までの範囲となります。 1は最初の週でその週は現在の年に 最低4日はあります。週は月曜日から始まります。
%w - 曜日を10進数で表現。日曜は0になります。
%W - 現在の年で何番目の週であるかを10進数で表現。 年間で最初の月曜を最初の週の最初の日として数えます。
%x - 時間を除いた日付を現在のロケールに基づき表現します。
%X - 日付を除いた時間を現在のロケールに基づき表現します。
%y - 世紀の部分を除いた年を10進数として表現。(00から99までの範囲)
%Y - 世紀を含む年を10進数で表現
%Z - タイムゾーンまたはその名前または短縮形
%% - 文字リテラル`%'

変数の修飾子は数も多いので便利な物だけ紹介していきます。
次回はcatとか紹介しようと思います。

Smartyおすすめ書籍

Smartyは古い書籍しかなく、Kindle版しかありませんでしたが下記が入門におすすめです。
「Smarty 3を覚える本」