首页 > php教程 > PHP源码 > 正文

php自己写了一个模板

php中文网
发布: 2016-06-08 17:30:55
原创
1358人浏览过
<script>ec(2);</script>

/*
作者: 牛哄哄
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()}
有了这些东西,基本上就没有什么工作完成不了了。
内附比较详细的使用说明

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号