Smarty 內建超過 20 個修飾器,涵蓋字串大小寫、計數、編碼、格式化、截取、替換等常見操作。本文逐一說明語法、參數與實際輸出範例。
| 修飾器 | 功能 | 參數說明 | 範例 |
|---|---|---|---|
| capitalize | 單字首字大寫 | true:含數字單字也大寫 | {$str|capitalize:true} |
| count_characters | 計算字元數 | true:包含空白 | {$str|count_characters} |
| cat | 字串連接 | 連接字串 | {$str|cat:' Happy New Year'} |
| count_paragraphs | 計算段落數 | 支援中文 | {$str|count_paragraphs} |
| count_sentences | 計算句子數 | 僅支援英文 | {$str|count_sentences} |
| count_words | 計算單字數 | - | {$str|count_words} |
| date_format | 日期格式化 | strftime 格式字串 | {$date|date_format:'%Y-%m-%d %H:%M:%S'} |
| default | 預設值 | 變數為空時替代輸出 | {$str|default:'無資料'} |
| escape | 編碼轉義 | html/url/javascript/hex/hexentity | {$html|escape:'html'} |
| indent | 縮排 | 字元數(預設4)、縮排字元(預設空白) | {$str|indent:10:'>'} |
| lower | 轉小寫 | - | {$str|lower} |
| upper | 轉大寫 | - | {$str|upper} |
| nl2br | 換行轉 <br> | - | {$str|nl2br} |
| regex_replace | 正則替換 | preg_replace 語法 | {$str|regex_replace:'/go{2}gle/':'baidu'} |
| replace | 簡單替換 | 搜尋字串、替換字串 | {$str|replace:'old':'new'} |
| spacify | 插入分隔符 | 分隔字串(預設空白) | {$str|spacify:'^^'} |
| string_format | 浮點數格式化 | sprintf 格式 | {$num|string_format:'%.2f'} |
| strip | 壓縮空白 | 替換字元(預設空白) | {$str|strip:' '} |
| strip_tags | 移除 HTML 標籤 | - | {$str|strip_tags} |
| truncate | 截斷字串 | 長度、尾綴(預設...)、是否精確截斷 | {$str|truncate:10:'...':true} |
{$html|escape:"html"} <!-- HTML 實體編碼 -->
{$url|escape:"url"} <!-- URL 編碼 -->
{$js|escape:"javascript"} <!-- JS 字串轉義 -->
{$str|truncate:10:'...':true} <!-- 強制截 10 字元 -->
{$str|truncate:10} <!-- 預設在單字邊界截斷 -->
{$var|upper|truncate:20|escape:'html'}