首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Smarty 內置變量修飾器完整手冊:20 個核心修飾器用法與範例

     編輯:PHP 綜合知識

前言

Smarty 修飾器(Modifier)以管道符 | 套用於變數,支援鏈式調用與參數傳遞。官方內建 20+ 修飾器,涵蓋字串處理、格式化、轉義、截斷等常見需求。本文逐一說明語法、參數與實戰範例。

修飾器速查表

修飾器功能參數說明範例
capitalize單詞首字大寫bool 是否處理含數字單詞(預設 false){$str|capitalize:true}
count_characters計算字元數bool 是否計算空白(預設 false){$str|count_characters:true}
cat字串連接string 尾部附加字串{$str|cat:' - 附註'}
count_paragraphs段落數(雙換行分隔)-{$text|count_paragraphs}
count_sentences句子數(英文句點判斷)-{$text|count_sentences}
count_words單詞數-{$str|count_words}
date_format日期格式化string strftime 格式字串{$timestamp|date_format:'%Y-%m-%d %H:%M'}
default預設值(變數為空/未定義)string 預設字串{$var|default:'無資料'}
escape編碼轉義html|url|quotes|hex|hexentity|javascript(預設 html){$url|escape:'url'}
indent每行縮排int 字元數(預設 4)、string 縮排字元(預設空格){$text|indent:2:'>'}
lower轉小寫-{$str|lower}
upper轉大寫-{$str|upper}
nl2br換行轉 <br>-{$text|nl2br}
regex_replace正則替換pattern, replacement(preg_replace 語法){$url|regex_replace:'/google/':'baidu'}
replace簡單字串替換search, replace{$str|replace:'old':'new'}
spacify字元間插入分隔符string 分隔符(預設空格){$str|spacify:'^^'}
string_format格式化浮點數string sprintf 格式{$num|string_format:'%.2f'}
strip合併連續空白字元string 替換字元(預設空格){$text|strip:' '}
strip_tags移除 HTML 標籤-{$html|strip_tags}
truncate截斷字串int 長度(預設 80)、string 尾碼(預設 ...)、bool 是否精確截斷單詞(預設 false){$long|truncate:50:'...':true}

重點修飾器深度範例

date_format — 日期時間格式化

// PHP
$tpl->assign('now', time());
$tpl->assign('dt', '2024-01-15 14:30:00');
{$now|date_format:'%Y-%m-%d %H:%M:%S'}   {* 2024-01-15 14:30:00 *}
{$dt|date_format:'%Y年%m月%d日'}        {* 2024年01月15日 *}

escape — 多場景轉義

{$html|escape:'html'}       {* <a> -> &lt;a&gt; *}
{$url|escape:'url'}         {* 空格 -> %20 *}
{$jsVar|escape:'javascript'} {* 換行 -> \n, 單引號 -> \' *}

truncate — 智能截斷

{$article|truncate:100}           {* 100 字元,單詞邊界截斷,加 ... *}
{$article|truncate:100:'...':true} {* 強制 100 字元精確截斷 *}
{$article|truncate:50:' [閱讀全文]'}

regex_replace — 正則替換實戰

{* 隱藏手機中間 4 碼 *}
{$mobile|regex_replace:'/(\d{3})\d{4}(\d{4})/':'$1****$2'}

{* 移除多餘空白行 *}
{$content|regex_replace:'/\n{3,}/':"\n\n"}

鏈式調用技巧

{* 先截斷再轉義,防止 XSS *}
{$userInput|truncate:200:'...':true|escape:'html'}

{* 格式化價格:保留 2 位小數,加千分位 *}
{$price|string_format:'%.2f'|regex_replace:'/(\d)(?=(\d{3})+(?!\d))/':'$1,'}

自訂修飾器開發

參考 《Smarty 自定義修飾器開發指南》(對應 ID 57882)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved