作者:只爱裙装 | 来源:互联网 | 2018-07-17 07:44
ec(2);*作者:牛哄哄QQ:455703030*functiontemplate($template,$cacheFile,$set){is_readable($template)||exit(模板文件不存在!);filemtime($template)>@filemtime($cacheFile)&&parse_tem
/*
作者: 牛哄哄
Q Q: 455703030
*/
function template($template,$cacheFile,$set)
{
is_readable($template) || exit('模板文件不存在!');
filemtime($template) > @filemtime($cacheFile) && parse_template($template,$cacheFile);
$inTemplate = true;
is_readable($cacheFile) ? include $cacheFile : exit('无法读取缓存,缓存路径可能有误!');
}
function parse_template($template,$cacheFile='')
{
$cOntent= file_get_contents($template);
$cOntent= preg_replace('/\{\*([^\{\}]*)\*\}/','',$content);
$cOntent= preg_replace('/\$([A-Za-z0-9_]+)/','$set[\'\\1\']',$content);
$cOntent= preg_replace('/\$\[([A-Za-z0-9_]+)\]/','$\\1',$content);
$cOntent= preg_replace('/\{\$([A-Za-z0-9_\[\]\'"]+)\}/',' echo $\\1; ?>',$content);
$cOntent= preg_replace('/\{include\(([^\{\}]+)\)\}/',' include \\1; ?>',$content);
$cOntent= preg_replace('/\{echofile\(([^\{\}]+)\)\}/',' echo file_get_contents(\\1); ?>',$content);
$cOntent= preg_replace('/\{code\(([^\{\}]+)\)\}/',' \\1; ?>',$content);
$cOntent= preg_replace('/\{if\(([^\{\}]+)\)\}/',' if (\\1) { ?>',$content);
$cOntent= preg_replace('/\{elseif\(([^\{\}]+)\)\}/',' } elseif(\\1) { ?>',$content);
$cOntent= preg_replace('/\{while\(([^\{\}]+)\)\}/',' while (\\1) { ?>',$content);
$cOntent= preg_replace('/\{foreach\(([^\{\}]+)\)\}/',' foreach (\\1) { ?>',$content);
$cOntent= str_replace(array('{else}','{/if}','{/while}','{/foreach}'),array(' }else{ ?>',' } ?>',' } ?>',' } ?>'),$content);
if (preg_match_all('/\{template\(([^\{\}]+)\)\}/',$content,$tplName))
{
foreach ($tplName[1] as $value) $tplContent[] = parse_template(eval('return '.$value.';'));
$cOntent= str_replace($tplName[0],$tplContent,$content);
}
if ('' == $cacheFile) return $content;
@file_put_contents($cacheFile,' true===$inTemplate || exit(\'非法访问!\'); ?>'.$content);
}
1,修复一个因为疏忽造成的小BUG,编译之后的代码少 了一个{符号,呵呵
2,更改模板嵌套的编译模式,现在这种模式使用更简单方便,也更符合大家的习惯
3,增加了一个新的功能,其实本来提供的功能,也可以实现此功能,但是毕竟不专业,用起来不方便。此功能用来直接输出一个静态的文件,我曾经做过测试,这样直接输出,效率要比include高的多的多
此模板函数提供的标签及功能:
1,添加注释
{* *}
2,输出变量
{$i} //需要对变量进行格式化,可以使用{code()}标签来执行一个函数进行格式化输出
3,包含一个动态文件
{include()}
4,包含一个静态文件
{echofile()}
5,嵌套一个模板
{template()}
6,判断,分支
{if()} {elseif()} {else} {/if}
7,循环
{while()} {/while}
{foreach()} {/foreach}
8,执行一段PHP代码,包括赋值,函数等等等等
{code()}
有了这些东西,基本上就没有什么工作完成不了了。
内附比较详细的使用说明