smarty中调用php内置函数

最后更新于:2022-04-01 11:54:28

CleverCode发现smarty中调用php内置函数可以通过|实现。|前后没有空格。如果是数组求count需要加上@。 1个参数时候: ~~~ {{'param1'|functionName}}  例如 {{$tmpStr|strlen}} ~~~ 2个参数时候: ~~~ {{'param1'|functionName:'param2'}} {$tmpStr|substr:'1'}  ~~~ 多个参数时候: ~~~ {{'param1'|functionName:'param2':'param3'..}}  {{$tmpStr|substr:'1':'2'}} {{'a'|str_replace:'A':$tmpStr}} ~~~ ## 1 marty判断是否为空  如下代码php分配给tmpStr为空或没分配;那么smarty中输出0。这个是调用了php的内置函数strlen php代码: ~~~ $smarty->assign('tmpStr',''); smarty代码: {{if $tmpStr|strlen > 0 }}     1 {{else}}     0 {{/if}} ~~~ ## 2 marty求数组长度 通过php内置的函数is_array和count求得数组长度,如下的代码输出5 php代码: ~~~ $smarty->assign('tmpArr',array(1,2,3,4,5)); ~~~ smarty代码: ~~~ {{if $tmpArr|is_array && $tmpArr|@count > 0}}     {{$tmpArr|@count}} {{else}}     0 {{/if}} ~~~ ## 3 marty字符串替换 如下的代码是将tmpStr中的b替换为c ~~~ $smarty->assign('tmpStr','abb'); {{'b'|str_replace:'c':$tmpStr}} 输出:acc ~~~ ## 4 marty截取字段 ~~~ $smarty->assign('tmpStr','abb'); {{$tmpStr|substr:'1'}}  输出:bb {{$tmpStr|substr:'1':'1'}} 输出:b ~~~
';