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));