>백엔드 개발 >PHP 튜토리얼 >파워포인트 템플릿을 자동으로 간단하게 템플릿 엔진을 작성했습니다.

파워포인트 템플릿을 자동으로 간단하게 템플릿 엔진을 작성했습니다.

WBOY
WBOY원래의
2016-07-29 08:35:571309검색

엔진 파일

코드 복사 코드는 다음과 같습니다

/**
* Discuz 템플릿 엔진을 기반으로 Momo에서 개발한 OOP 템플릿 엔진으로 템플릿 캐싱을 지원하고 해시 md5 값을 생성할 수 있습니다.由hash值来判断模板是否被修改,假如被修改则重新生成缓存文件,假如没有被修改,则直接调用缓存文件.
* 版本:1.0.0.1 beta 测试版
*/
class mmtp{
var $left_tags="{";
var $right_tags="}";
var $tp_suffix=".html";
var $cache_suffix=".tpl";
var $tp_dir="./";
var $cache_dir="./";
/**
* 允许循环嵌套的次数,默认为5
*
* @var unknown_type
*/
var $nest = 5;
/**
* 模板路径
*
* @param unknown_type $tp_dir
* @return mmtp
*/
function __setdir($tp_dir){
if(file_exists($tp_dir)){
$this->tp_dir=$tp_dir; 
                        }else{ 
                                $this->error("模板路径不存在"); 
                        } 
        } 
        /** 
         * 设置缓存目录 
         * 
         * @param unknown_type $cache_dir 
         */ 
        function __setcdir($cache_dir){ 
                                if(file_exists($cache_dir)){ 
                                $this->cache_dir=$cache_dir; 
                        }else{ 
                                $this->error("缓存路径不存在"); 
                        } 
        } 
    /** 
     * 输出错误信息 
     * 
     * @param unknown_type $msg 
     */ 
        function error($msg){ 
                print "

".$msg."
"; 
        } 
        /**~*/ 
        기능 tp($file){ 
              $tp_path=$this->tp_dir.$file.$this->tp_suff ix ; 
               $fp=fopen($tp_path,"rb"); 
              if(!$this->file_test($tp_path,"r") && !$this->match_hash($file)) { 
                     $template=$this->file_read($tp_path); 
                $var_regexp = "((\$[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-x ff]* )([[a-zA-Z0-9_-."'[]$x7f-xff] ])*)"; 
                   $const_regexp = "([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*)"; 
                      $template = preg_replace("/([nr] )t /s", "\1", $template); 
                      $template = preg_replace("//s", "{\1}", $template); 
                      $template = preg_replace("/{langs (. ?)}/ies", "언어var('\1')", $template); 
                      $template = str_replace("{LF}", "", $template); 
                     $template = preg_replace("/{(\$[a-zA-Z0-9_[]'"$.x7f-xff] )}/s", "", $ template); $ template = preg_replace ( "/$ var_regexp/es", "$ this- & gt; addquote ( '& lt;? = \ 1? & gt;')", $ template); template = preg_replace("/?>/es", "$this->addquote('')", $template ); 
                       
                    $template = preg_replace("/[nrt]*{템플릿 ([a-z0-9_] )}[nrt]*/is", "ncache_dir."\1".$this->cache_suffix."'); ?>n", $template); 
                   $template = preg_replace("/[nrt]*{템플릿 (. ? )}[nrt]*/is", "ncache_dir."\1".$$this->cache_suffix."'); ?>n", $ 템플릿); 
                      $template = preg_replace("/[nrt]*{평가 (. ?)}[nrt]*/ies", "$this->stripvtags('nn','')", $template); 
                     $template = preg_replace("/[nrt] *{echos (. ?)}[nrt]*/ies", "$this->stripvtags('nn','')", $template); 
$template = preg_replace("/[nrt]*{elseifs (. ?)}[nrt]*/ies", "$this->stripvtags('nn' ,'')", $template); 
                      $template = preg_replace("/[nrt]*{else}[nrt]*/is", "nn", $template ); 
                       for($i = 0; $i < $this->nest; $i ) { 
                            $template = preg_replace("/[nt]*{loops (S ) 초(S) }[nr]*(. ?)[nr]*{/loop}[nrt]*/ies", "$this->stripvtags('n','n\3nn')", $template); 
                   $template = preg_replace("/[nrt]*{loops (S )s (S )s (S )}[nrt]*(. ?)[nrt]*{/loop}[nrt]*/ies", "$this->stripvtags('n \3) { ?>','n\4nn')", $template); 
                      $template = preg_replace("/[nrt]*{ifs (. ?)}[nr]*(. ?)[nr]*{/if }[nrt]*/ies", "$this->stripvtags('n','n\2nn')", $template) ;;                   $template = preg_replace("/ ? >[nr]*                     $hash=$this->file_hash($tp_path); 
                     $head_hash=""; 
                      $foot_time=""; 
                      $this->file_write($this->cache_dir.$file.".tpl",$head_hash.$template.$foot_time); 
                       
                } 
        }
/**
* 파일이 존재하고 읽기 권한이 있는지 확인
* *
* @paramknown_type $path
*/
함수 File_test ($ PATH, $ 메서드) {
If (!File_exists ($ PATH) ||! FOPEN ($ PATHOD)) {
;                                                                        🎜> 함수 file_read($path,$length=0){
if(!$this->file _test($path,"r ")){
$fp=@fopen($path," r ");
if($length==0){
$c
}else{
$c
                                                                                                          ; 경로,"w ")){
$fp=@fopen($path,"w ")
@fwrite($fp,$puts)
fclose($fp); }

         
        /**~*/ 
        function file_hash($path){ 
               return md5_file($path); 
        } 
         
        /**
* 템플릿 파일과 캐시 파일의 해시값 비교
* *
*/ 
        함수 match_hash($file){ 
              $read_hash=$this->file_read($this- >cache_dir.$파일 .$this->cache_suffix,46); 
               $html_hash=$this->file_hash($this->tp_dir.$file.$this->tp_suffix); 
                      if(preg_match("/".$html_hash."/i",$read_hash)){ 
                      return true; 
               } 
        } 
        기능 addquote($var) { 
        return str_replace("\"", """, preg_replace("/[([a-zA-Z0-9_-.x 7f -xff] )]/s", "['\1']", $var)); 
        } 
        함수 transamp($str) { 
        $str = str_replace('&', '&', $str); 
        $str = str_replace('&', '&', $str); 
        $str = str_replace('"', '"', $str); 
        $str 반환; 

        기능 stripvtags($expr, $statement) { 
        $expr = str_replace("\"", """, preg_replace("/        $statement = str_replace("\"", """, $statement); 
        $expr.$statement를 반환합니다. 


$tp=new mmtp(); 
$tp->__setdir("./"); 
$tp->__setcdir("./cache/"); 
$tp->tp("index1"); 
$_GET[it]=sdhkadajksdhajdhkajsdhjkasdjkasdhasjdhkjsadhk; 
$name=2; 
$head="欢迎使用MoMo模板引擎"; 
include("./cache/index1.tpl"); 
?> 

模板index.html 



复aze代码

代码如下:

{$head}

 模板index1.html

复主代码

代码如下:

{template index} 

{if $name==1}  你好  {else}  谢谢  {/if}  

这个模板是默默今天下午写的,写的比较仓促,也许存在漏洞,这个版本只是测试版,以后나는 당신의 모험을 위해 최선을 다하고 있습니다.

以上就介绍了powerpoint 模板 默默简单的写了一个模板引擎,包括了powerpoint 模板方面 内容,希望对PHP教程有兴趣的朋友有所帮助。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.