Smarty マニュアル

前のページ

次のページ

第 5章変数の修正子

目次

capitalize

count_characters

cat

count_paragraphs

count_sentences

count_words

date_format

default

escape

indent

lower

nl2br

regex_replace

replace

spacify

string_format

strip

strip_tags

truncate

upper

wordwrap

変数の修正子は、変数やカスタム関数や文字列を修飾して出力するための修正子です。これを用いるには、変数名の後に |(パイプ)と修正子の名前を指定します。また、修正子はその動作に影響を及ぼす追加のパラメータを 受け入れる場合もあります。そのパラメータは修正子の後に続き、:(コロン)によって分けられます。

例 5-1. 変数の修正子の例

{* 変数に修正子を適用する *}{$title|upper}{* パラメータを持つ修正子 *}{$title|truncate:40:"..."}{* テンプレート関数のパラメータに修正子を適用する *}{html_table loop=$myvar|upper}{* パラメータ付き *}{html_table loop=$myvar|truncate:40:"..."}{* リテラル文字列に修正子を適用する *}{"foobar"|upper}{* 現在の日付を整形するために date_format を用いる *}{$smarty.now|date_format:"%Y/%m/%d"}{* カスタム関数に修正子を適用する *}{mailto|upper address="me@domain.dom"}

配列に対して修正子を用いた場合は、その配列に格納された全ての値に影響を及ぼします。 配列全体を1つの値として作用させるには修正子の先頭に@記号をつける必要があります。 (例) {$articleTitle|@count} (配列$articleTitleの要素数を出力します)

修正子は $plugins_dir から自動的に読み込むか(参照: 命名規約)、明示的に登録する事が可能です(参照: register_modifier)。さらに全てのphp関数は暗黙で修正子として 使用する事ができます(前述の @count の例では、Smartyの修正子ではなくphpのcount関数を使用する)。 修正子としてphp関数を使うには2つの小さな落とし穴があります。第1: たまに関数のパラメータの順序が 望ましいものではなくなる({"%2.f"|sprintf:$float} は実際に動作するが、 Smartyによって提供される {$float|string_format:"%2.f"} のほうがより分かりやすい)。 第2: $security が有効な場合、修正子として使用される全てのphp関数は $security_settings['MODIFIER_FUNCS'] 配列内で 信頼できるものとして定義される必要があるということ。

capitalize

パラメータの位置型必須デフォルト概要

1

boolean

No

false

一ケタのワードを大文字にするかどうか

変数内の全ての単語の先頭を大文字で開始します。

例 5-2. capitalize

<?php

$smarty = new Smarty;
$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');
$smarty->display('index.tpl');

?>

index.tpl :

{$articleTitle}{$articleTitle|capitalize}{$articleTitle|capitalize:true}

出力:

next x-men film, x3, delayed.Next X-Men Film, x3, Delayed.Next X-Men Film, X3, Delayed.

ページ上段