【www.gdgbn.com--php框架模板】

简单php教程模板引擎的实现例子






{$var}

{loop $arr $v}
{$v} |
{/loop}

index.php调用文件

header("content-type:text/html; charset=utf-8");
require_once "./include/common.inc.php";

$var = "abc";
$arr = array(1, 2, 3);

include template("index");
?>

/common.inc.php文件

define("in_site", true);
define("site_root", substr(dirname(__file__), 0, -7));

require_once site_root."./include/template.func.php";

$tplrefresh = 1;                              //设置是否检查更新
$tpldir = site_root."./templates/default/";   //模板存放目录
$objdir = site_root."./sitedata/templates/";  //模板编译文件存放目录
?>

template.func.php文件

if(!defined("in_site")) {
    exit("access denied!");
}

function checktplrefresh($tplfile, $timecompare) {
    global $tplrefresh;

    if($tplrefresh == 1 && @filemtime($tplfile) != $timecompare) {
        parse_template($tplfile);
    }
 return true;
}

function template($file) {
 global $tpldir, $objdir;

 $objfile = $objdir.$file.".tpl.php";

    if(!file_exists($objfile)) {
        $tplfile = $tpldir.$file.".htm";
        parse_template($tplfile);
    }
    return $objfile;
}

function parse_template($tplfile) {
    global $tpldir, $objdir;

 $file = basename($tplfile, ".htm");
 $objfile = $objdir.$file.".tpl.php";

    if(!$fp = @fopen($tplfile, "r")) {
  exit("current template file "$tplfile" not found or have no access!");
 }
 $template = fread($fp, max(filesize($tplfile), 1));
 fclose($fp);

    $template = preg_replace("/[nrt]*{subtemplates+([a-z0-9_:]+)}[nrt]*/is", "", $template);

 $template = preg_replace("/([nr]+)t+/s", "1", $template);
 $template = preg_replace("//s", "{1}", $template);
    $template = preg_replace("/{($[a-za-z0-9_[]""$.x7f-xff]+)}/s", "", $template);

    $template = preg_replace("/[nrt]*{evals+(.+?)}[nrt]*/is", "", $template);
    $template = preg_replace("/[nrt]*{echos+(.+?)}[nrt]*/is", "", $template);
 $template = preg_replace("/([nrt]*){elseifs+(.+?)}([nrt]*)/is", "13", $template);
 $template = preg_replace("/([nrt]*){else}([nrt]*)/is", "12", $template);

 for($i = 0; $i < 5; $i++) {
        $template = preg_replace("/[nrt]*{loops+(s+)s+(s+)}[nr]*(.+?)[nr]*{/loop}[nrt]*/is", "3", $template);
        $template = preg_replace("/[nrt]*{loops+(s+)s+(s+)s+(s+)}[nrt]*(.+?)[nrt]*{/loop}[nrt]*/is", " 3) { ?>4", $template);
  $template = preg_replace("/([nrt]*){ifs+(.+?)}([nr]*)(.+?)([nr]*){/if}([nrt]*)/is", "13456", $template);
 }

    $template = preg_replace("/{([a-za-z_x7f-xff][a-za-z0-9_x7f-xff]*)}/s", "", $template);
 $template = preg_replace("/ ?>[nr]*

 $template = preg_replace("/"(http)?[w./:]+?[^"]+?&[^"]+?"/e", "transamp("")", $template);
 $template = preg_replace("/<script[^>]*?src="(.+?)"(.*?)>s*</script>/ise", "strips教程criptamp("1", "2")", $template);

    $template = "n$template";

    if(!$fp = @fopen($objfile, "wb")) {
  exit("directory "$objdir" not found or have no access!");
 }
 flock($fp, lock_ex);
    fwrite($fp, $template);
    flock($fp, lock_un);
 fclose($fp);
}

function transamp($str) {
 $str = str_replace("&", "&", $str);
 $str = str_replace("&amp;", "&", $str);
 $str = str_replace(""", """, $str);
 return $str;
}

function stripscriptamp($s, $extra) {
 $extra = str_replace(""", """, $extra);
 $s = str_replace("&", "&", $s);
 return "<script src="$s" type="text/网页特效"$extra></script>";
}
?>

本文来源:http://www.gdgbn.com/jiaocheng/28994/