變數調節器用於變數,自訂函數和字串。使用‘|’符號和調節器名稱應用調節器。變數調節器由賦予的參數值決定其行為。參數由‘:’符號分開。
Smarty模板引擎中的自訂函數放在外掛程式目錄(plugins)下,內建函數寫在smarty本身的文法裡面。自訂函數可以任意修改,任意添加,內建函數則不然。
我們可以在plugins目錄下自訂函數檔案,但必須嚴格按照smarty的函數命名規範,以便我們在調用自訂函數的時候,smarty才能夠在plugins下找到。
接下來,我們將定義兩個自訂函數:
- 函數stredit用於對字串的大小寫轉換操作
- 函數jiequ用於對字串進行截取操作
命名規範:
- 變數調節器檔案名稱必需以modifier開頭,後面接上自訂函數名:如modifier.stredit.php,modifier.jiequ.php
- 變數調節器函數名的命名必需以smarty_modifier_開頭,後接上自訂函數名:如smarty_modifier_stredit()、smarty_modifier_jiequ()
自訂字串操作函數
<?php
/*
* Smarty plugin
* 自訂的字串大小寫轉換函式
*/
function smarty_modifier_stredit($str, $model)//函數的命名規則:以smarty_modifier_開頭
{
switch($model){
case "lower":
$str=strtolower($str);
break;
case "upper":
$str=strtoupper($str);
break;
case "first_upper":
$str=ucfirst($str);
break;
}
return $str;
}
?>
<?php
/*
* Smarty plugin
* 自訂的字串截取函數
*/
function smarty_modifier_jiequ($string,$start=0,$length=100){//三個參數:$string指定要截取的字串,$start指定從哪開始截取,$length指定截取的長度
return $string=substr($string,$start,$length);
}
?>
有了以上的準備工作,我們就可以開始使用smarty對模板中的字串變數進行操作了~~~
①首先,先進行smarty的初始化工作
<?php
include "./smarty.ini.php";
$test="abc Def DJDdk wDJli";//可以根據需要從資料庫中取得
$tpl->assign("test",$test);
$tpl->display("test2.html");
?>
②test2.html檔案中的代碼如下
<table style="text-align:right; background:#ECFFEC;float:left">
<tr align="center"><th colspan="2">使用自訂的Smarty外掛程式函數操作字串</th></tr>
<tr><td>原字 符串:</td><td><{$test}><br></td></tr>
<tr><td>大 寫:</td><td><{$test|stredit:upper}><br></td></tr>
<tr><td>小 寫:</td><td><{$test|stredit:lower}><br></td></tr>
<tr><td>首字母大寫:</td><td><{$test|stredit:first_upper}><br></td></tr>
<tr><td>截取字串:</td><td><{$test|jiequ:"0":"5"}><br></td></tr>
<tr><td>先大寫再截取:</td><td><{$test|stredit:upper|jiequ:"0":"5"}><br></td></tr>
<tr><td>先小寫再首字母大寫:</td><td><{$test|stredit:lower|stredit:first_upper}><br></td></tr>
</table>
<table style="text-align:right; background:#FFE0C1;float:left;margin-left:10px">
<tr align="center"><th colspan="2">使用系統自訂函數操作字串</th></tr>
<tr><td>原字 符串:</td><td><{$test}><br></td></tr>
<tr><td>大 寫:</td><td><{$test|upper}><br></td></tr>
<tr><td>小 寫:</td><td><{$test|lower}><br></td></tr>
<tr><td>首字母大寫:</td><td><{$test|capitalize}><br></td></tr><!--此函數的功能是將所有單詞的首字元大寫-->
<tr><td>截取字串:</td><td><{$test|truncate:5:"":true}><br></td></tr>
<tr><td>先大寫再截取:</td><td><{$test|upper|truncate:5:"":true}><br></td></tr>
<tr><td>先小寫再首字母大寫:</td><td><{$test|lower|capitalize}><br></td></tr>
</table>
③輸出的結果