php函數原型: echo functionName('param1','param2','param3'); 實例: " /> 寂寞夜晚看免费视频,偷窥国产亚洲免费视频,久久久久青草大香线综合精品

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

在smarty中調用php內置函數的方法

相信有很多朋友還不知道,可以在smarty模板里調用php的內置函數,我們一起來看看它的用法。

模板書寫:
{'param1'|functionName:'param2':'param3'}

php函數原型:
echo functionName('param1','param2','param3');
實例:
{'1234567'|substr:'1':'2'}

下面這個和函數的參數順序有關系

{'a'|str_replace:'A':'abcd'}

直接延伸到,直接在php中寫一個函數調用,不需要注冊修改器的.

更深一步的研究:發現數組會出錯.

分配了一個數組array給Smarty,假設Smarty的分界符為'{' 和'}'。

在很多資料上都看到,在Smarty中要求數組的長度時,可以用在數組后便加|count的方法調用。即通過{array|count}獲得 array的長度。但是今天在寫模板時,發現這樣得不到數組的長度,而只是得到一個返回的字符串Array。也就是說僅僅是返回了{array}的結果, 而沒有返回其array的長度。
查看smarty/plugins文件夾,發現并沒有count的相關方法,也就是說,count是直接調用了php中的方法。

后來通過網絡上的資料,發現可以在count前面加@,從而正確的獲取數組的長度。再進一步查看Smarty的源碼,發現Smarty對屬性調節器后邊的 方法名進行處理時,會對前邊加@的進行特殊處理。因此作出判斷:在Smarty中的屬性調節器中調用php中定義好的函數時,可以通過加@來表示。
1、對類型為數組的方法進行測試時,發現不加@符號都會出錯。比如:要對一個數組調用count方法求出數組的長度,就可以這樣調用{array|@count},而要對數組調用end方法得出數組的最后一組數據時,則可以通過{array|@end}。
2、在對字符串的相關函數進行測試,發現加不加@都可以正常的調用。
3、其他的尚未認真測試。

對于在smarty中調用復雜的php函數不予鼓勵,因為Smarty的本意就是要實現代碼和模板分離,不要偏離了人家的設計初衷。

模板書寫:
{'param1'|functionName:'param2':'param3'}

php函數原型:
echo functionName('param1','param2','param3');

實例:
{'1234567'|substr:'1':'2'}
下面這個比較怪 和函數的參數順序有關系
{'a'|str_replace:'A':'abcd'}

Smarty調用自定義函數
調用自定義函數需要用到register_function() 來注冊
這里為大家舉個例子,常見的字符串切割

函數如下
復制代碼 代碼如下:
<?php
function SmartyLen($params){
extract($params);
$len=strlen($text);
$max=$length;
for   ($i=0;$i<$length;$i++){
           $chr=substr($text,$i,1);
           if(ord($chr)>0x80)//字符是中文
           {
               $length++;
               $i++;
      $len--;
            }
}
$str=substr($text,0,$length);
if($len>$max)$str.="...";
Return $str;
}

注冊函數
$smarty->register_function('len',"SmartyLen");

模板調用
{len text="測試下" length="1"} //注意這里的text和length其實是函數里的2個參數函數的參數必須要以函數內部變量名一致,其實傳回去的的是個數組,在函數里用extract($params);把數組中的變量導入到當前的符號表。

php技術在smarty中調用php內置函數的方法,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 果冻传媒AV精品一区 | 久热这里在线精品 | 十九岁韩国电影在线观看 | nxgx69日本护士 | 日韩性xxx| 一抽一出BGM免费3分钟 | 日本一区二区三区在线观看网站 | 精品午夜中文字幕熟女人妻在线 | 年轻的女教师2017韩国在线看 | 娇喘高潮教室h | 狠狠色狠狠色综合日日32 | 无码AV免费精品一区二区三区 | 大学生第一次破苞疼哭了 | 亚洲 综合 欧美在线视频 | 欧美老妇与zozoz0交 | 天天综合网网欲色 | 2012中文字幕手机在线 | 日韩在线 无码 精品 | 樱花动漫成人隐藏入口 | 99视频精品全部免费 在线 | 伊人影院中文字幕 | 亚洲 制服 欧美 中文字幕 | 久久er国产免费精品 | 在线播放毛片 | 亚洲综合网国产精品一区 | 亚洲午夜一区二区电影院 | 91久久偷偷做嫩草影院免费看 | 亚洲 综合 欧美在线 热 | 百性阁综合社区 | 91精品乱码一区二区三区 | 国产又粗又黄又爽的大片 | 5g在视影讯天天5g免费观看 | 我半夜摸妺妺的奶C了她 | 日本妞欧洲 | 久久久久久久国产精品视频 | 国产精品久久久久久久A片冻果 | 挤奶门事件完整照片 | GOGOGO高清免费播放 | 乱精品一区字幕二区 | 有码 亚洲 制服 国产 在线 | 全黄h全肉短篇禁乱np |