smarty模板进一步分析

Smarty过程详解:

       第一步:首先在一个php文件里引入写好的模板类

       第二部:由该类创建模板对象。

       第三步:调用函数,将所有php中的变量保存到一个变量数组中

       第四步:调用显示函数(将编译好的新文件显示到页面)

显示函数中的几点:1)、正则替换(函数tpl_replace()),替换该类型<{$title }>为<?php  echo $title; ?>


* 定义模板文件中这种结构的<{ $title }>正则表达式

              *$pattern= ‘/\<\{\s*\$([a-zA-Z_\x7f\xff][0-9a-zA-Z_\x7f\xff]*)\s*\}\>/I’;

              * 替换后的内容:<?php echo $title; ?>格式

              *本文件中保存变量采取 $this->tpl_vars[$tpl_var]=$value;

      

              *$replacement = '<?php echo$this->tpl_vars["${1}"]; ?>';

 

       这里的{1,2.。。。n} 代表上面在正则中出现的小括号中的正则,每一个小括号为一组,这里的 {1} 代表([a-zA-Z_\x7f\xff][0-9a-zA-Z_\x7f\xff]*) 这个正则,小括号有几个就代表机组,{1} 这里就可以对应的写几。

 

还有一点是今天新发现的,找了半天,但是具体原因还没有查到啊,不知道大家有没有遇见,这个问题就是:在写正则的时候用到的单引号和双引号,

$pattern= ‘/\<\{\s*\$([a-zA-Z_\x7f\xff][0-9a-zA-Z_\x7f\xff]*)\s*\}\>/I’;

就比如这条语句如果用双引号就不能匹配,如果改成双一号就ok了,如果有知情人士透漏下啊!

 

              *   $newreplace =preg_replace($pattern,$replacement,$content);

                     *  寻找模板文件

                     *  $tplFile =$this->template_dir.$filename;

                     *   这个完整的路径就是“./templates/yemian.html”

*  tpl_replace(file_get_contents($tplFile));

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值