+ -
当前位置:首页 → 问答吧 → 自己写的一个模板解析函数~~~

自己写的一个模板解析函数~~~

时间:2008-04-25

来源:互联网

新增功能:
同时支持两种分隔符,而更重要的是,同时支持两种分隔符,仅仅增加了一条str_replace语句,对解析模板的性能影响很小
1,<{ }>  用于需要在预览时可查看到的内容的显示,原分隔符{}放弃,因为可能会跟页面中的一些东西冲突,尽管这种可能性很小
2,<!--{}-->  用于那些会影响页面预览效果的标签,如循环,判断等,当然仅仅是一个简单的变量输出时,也可以这样做,随便你了
你不需要做任何的配置或设置,就可以随意使用这两种分隔符(可同时使用),大幅度提高预览效果,这将会非常的方便。

注意:
若希望获得更高性能,可将parse_template函数放入一个独立的文件,在template中调用parse_template函数之前将这个文件包含进来,当然需要放在那个判断中。
这样可以极大的减小模板引擎的体积,不解析模板时,也就是那么1,2百个字节而已,性能,那是不用说了,体验模板引擎带来的好处的同时,仅仅需要付出一点点微不足道的性能损失

[ 本帖最后由 fhjr999 于 2008-5-20 20:26 编辑 ]
Smarty.class.rar (6.78 KB)

2008-5-6 22:02, 下载次数: 65

作者: fhjr999   发布时间: 2008-04-24

鼓励。

作者: PHPChina   发布时间: 2008-04-24

为啥我写的东西愣是没人顶呢???难道我写的真的很烂???

作者: luzhou   发布时间: 2008-04-28

兄弟不是没人顶你,许多人还跟小弟我一样,属于初学者

连基本php和html混合代码都不一定能写的好的我们

您让我们顶您写的这个模板函数不是强人所难吗?呵呵

作者: fhjr999   发布时间: 2008-04-29

跟dz很类似

作者: wangbaoming   发布时间: 2008-04-30

确实很类似,本来对正则不太会。

我使用的编译模式跟现在完全不同,后来参考了一下DZ的,发现这样做确实非常方便,非常灵活,于是就学习了下,也算练习下正则了。

本来正则仅仅是刚入门水平,写完这个函数,一般的都已经可以轻松写出来了。

可以说,写了这个小东西,我学会了很多,也希望这个东西,可以方便到大家。

作者: lyhiving   发布时间: 2008-04-30

的确。对正则不太感冒。不好说什么 。但感觉很棒。呵呵跟dz有点相似。

作者: fhjr999   发布时间: 2008-04-30

调整了优化缓存文件的正则语句。
我在几个网页测试了下,未发现任何显示效果的变化了。
缓存的优化效果还是不错的,大概可以减小缓存体积的20%,不仅减小了体积,而且还将相邻标签编译后产生的?>和<?去掉了,可以减小PHP编译器的开启闭合,对提高模板缓存的执行效率,应该还是很有帮助的。
已经下载的朋友,请重新下载。

下面是经过了优化的缓存文件:
复制内容到剪贴板
代码:
<? true===$inTemplate || exit('非法访问!'); ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!-- saved from url=(0017)http://localhost/ --> <HTML><HEAD><TITLE>徐威重科内部网</TITLE> <META http-equiv=Content-Language content=zh-cn> <META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK href="徐威重科内部网.files/css.css" type=text/css rel=stylesheet> <SCRIPT language=javascript src="徐威重科内部网.files/jquery.js"></SCRIPT> <SCRIPT language=javascript> function login() { var user = document.getElementById("username").value; var pwd = document.getElementById("password").value; var data = "user="+user+"&pwd="+pwd; $.ajax({ url:"User/Login_in.php", type:"post", dataType:"html", data:data, success:function(msg){ if ("OK" == msg) { location.reload(); } else { alert(msg); } }, error:function(){ alert("产生不可预料的错误,请拨打电话 6359 通知网络管理员!"); } }); } function out() { $.ajax({ url:"User/Login_out.php", type:"post", dataType:"html", success:function(msg){ if ("OK" == msg) { location.reload(); } else { alert("退出失败,请拨打电话 6359 通知网络管理员!"); } } }); } function upload() { $.ajax({ url:"Files/Upload_power.php?ajax_power=1", dataType:"html", success:function(msg){ if ("OK" == msg) { location.href = "Index.php?m=Files-Upload"; } else { alert(msg); } } }); } function file_upload() { var categories = document.getElementById("categories").value; var filename = document.getElementById("filename").value; var filepath = document.getElementById("filepath").value; var ms = ""; if ("" == categories) { ms = ms + "您尚未选择文件分类!\n"; } if ("" == filename) { ms = ms + "您尚未填写文件名称!\n"; } if ("" == filepath) { ms = ms + "您尚未选择需要上传的文件!"; } if ("" != ms) { alert(ms); } else { document.getElementById("fileupload").submit(); } } function last_page() { history.go(-1); } </SCRIPT> <META content="MSHTML 6.00.2900.3314" name=GENERATOR> <STYLE type=text/css>.STYLE1 { COLOR: #ffffff } </STYLE> </HEAD> <BODY class=bg1 text=#000000 bgColor=#ffffff leftMargin=0 topMargin=1> <DIV align=center> <TABLE id=__01 height=94 cellSpacing=0 cellPadding=0 width=981 border=0> <TBODY> <TR> <TD><IMG height=94 alt="" src="徐威重科内部网.files/top_06.gif" width=452></TD> <TD><IMG height=94 alt="" src="徐威重科内部网.files/top_02.gif" width=205></TD> <TD vAlign=bottom><IMG height=94 alt="" src="徐威重科内部网.files/top_03.gif" width=324


[ 本帖最后由 fhjr999 于 2008-5-3 23:56 编辑 ]

作者: redmoon_j   发布时间: 2008-05-03

顶一顶

作者: fhjr999   发布时间: 2008-05-06

鼓励原创!!!
虽然我现在还不太精通php
但是我一定会努力成为一个彪悍的phper!!

作者: fhjr999   发布时间: 2008-05-07

现在发现了一个问题,就是如果在模板内部大规模使用标签的话,会严重改变模板的显示效果,说错,不是改变显示效果,而是改变模板的预览效果。

最近好像在论坛里看到有人在研究所见即所得的模板引擎,什么原理呢??

难道是把每个标签都注释掉???

但是这样的话,就不能直观的看到在模板的相应位置,使用的到底是什么标签了啊。

[ 本帖最后由 fhjr999 于 2008-5-10 20:37 编辑 ]

作者: piaohh   发布时间: 2008-05-10

引用:
原帖由 fhjr999 于 2008-4-28 20:45 发表
为啥我写的东西愣是没人顶呢???难道我写的真的很烂???
我觉:
对于新手,不明白你说的是什么.都没有做过几个项目,对模板的意义没有理性认识
对于熟手,因php本身就具有模板特性,自己随意写代码就行了,不需要模板活照样干
对于高手,写个php的模板很容易,你翻翻以前的帖子,自己写模板的很多的.太容易了.
对于项目,有已经成型的,普遍使用的模板,这些都已经习惯了,都差不多,没有必要换.
对于未来,前台javascript模板正在升温,对后台模板已经不感兴趣了.

作者: fhjr999   发布时间: 2008-05-10

有学习EXT 2.0的打算,但是他个头太大了,只一个主文件就是500K,让我望而却步。

如果不想损失太大的网页传输时间,就只能在一个页面中实现尽量多的功能,这肯定会让页面变的很复杂,调试起来会很麻烦。

而且EXT中最常用的那部分功能,通过自己编写代码,实现起来也不算难。

实在是很难取舍。

作者: achun.shx   发布时间: 2008-05-10

顶上去,希望大家支持一下。

作者: fhjr999   发布时间: 2008-05-20

热门下载

更多