Home  >  Article  >  Backend Development  >  smarty中调用php内置函数

smarty中调用php内置函数

WBOY
WBOYOriginal
2016-06-23 13:20:541280browse

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
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn