PHP模板引擎Smarty變數調節器與自訂變數操作符

來源:互聯網
上載者:User

變數調節器用於變數,自訂函數和字串。使用‘|’符號和調節器名稱應用調節器。變數調節器由賦予的參數值決定其行為。參數由‘:’符號分開。

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>

③輸出的結果

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.