在smarty中调用php内置函数的方法_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在smarty中调用php内置函数的方法_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2572字,纯文字阅读大概需要4分钟。
内容图文
相信有很多朋友还不知道,可以在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);把数组中的变量导入到当前的符号表。
http://www.bkjia.com/PHPjc/326639.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/326639.htmlTechArticle相信有很多朋友还不知道,可以在smarty模板里调用php的内置函数,我们一起来看看它的用法。 模板书写: {'param1'|functionName:'param2':'param3'}...
内容总结
以上是互联网集市为您收集整理的在smarty中调用php内置函数的方法_PHP教程全部内容,希望文章能够帮你解决在smarty中调用php内置函数的方法_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。