[转]smarty中调用php函数

 

最近发现smarty的一个重要功能 就是能在smarty模板里面调用php的函数

模板书写

{'param1'|functionName:'param2':'param3'}

程序功能

echo functionName('param1','param2','param3');

以此类推例如

{'1234567'|substr:'1':'2'}

下面这个比较怪 和函数的参数顺序有关系

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




Smarty调用自定义函数
调用自定义函数需要用到register_function() 来注册
我来举个例子常见的字符串切割
函数如下
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);把数组中的变量导入到当前的符号表。

 

====================================================

smarty中可以使用php 函数来做modifier
例如:
{if $news|@count == 0}
后面的count就是php函数
一样可以传递参数给modifier
例如:
$myStr|substr:0:3 这个等于substr($mystr,0,3)
还可以继续用管道{$myStr|substr:0:3|strtoupper}
modifiers应用从左到右

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值