页:
[1]
| zshtom | 2007-10-22 02:01 PM |
|
没事玩写的30行的模板功能很简单
<?php
/**
* @author zshtom
* @copyright zshtom [email]0304681@126.com[/email] 2007-2008
*/
function zTemplate($filename, $templatedir='', $compliedir=''){
$comtime = @filemtime($compliedir.md5($filename).".php");//编译时间
$temtime = @filemtime($templatedir.$filename);//模板时间
if($temtime > $comtime){//是否重新写入模板
$str = file_get_contents($templatedir.$filename);
$str = preg_replace('|<!--{if (.+)}-->|isU', '<?php if(\\1){ ?>', $str);
$str = preg_replace('|<!--{/if}-->|isU', '<?php } ?>', $str);
$str = preg_replace('|{\$(.*)}|isU', '<?php echo $\\1; ?>', $str);
$str = preg_replace('|<!--{else}-->|isU', '<?php }else{ ?>', $str);
$str = preg_replace('|<!--{elseif (.*)}-->|isU', '<?php }elseif(\\1){ ?>', $str);
$str = preg_replace('|{eval (.*)}|isU', '<?php \\1; ?>', $str);
$str = preg_replace('|{echo (.*)}|isU', '<?php echo \\1; ?>', $str);
$str = preg_replace('|{include_php (.*)}|isU', '<?php if(is_file("\\1.php")){ include_once("\\1.php");} ?>', $str);
$str = preg_replace('|{include_htm(.*) (.*)}|isU', '<?php if(is_file("\\2.htm\\1")){ $str = file_get_contents("\\2.htm\\1"); echo $str;} ?>', $str);
$str = preg_replace('|<!--{loop (.*) (.*) (.*)}-->|isU', '<?php if(is_array(\\1)){ foreach(\\1 as \\2 => \\3){ ?>', $str);
$str = preg_replace('|<!--{/loop}-->|isU', '<?php }} ?>', $str);
$str = preg_replace('|{template (.*)}|isU', '<?php include_once(zTemplate("\\1", "'.$templatedir.'", "'.$compliedir.'")); ?>', $str);
@file_put_contents($compliedir.md5($filename).'.php', $str);
}
return $compliedir.md5($filename).'.php';//返回模板结果
}
include_once(zTemplate('template.html','template/', 'templates/'));
?>
用法简单 和dz的用法一样 没有加入语言功能 呵呵 可以自己改 ,没有测bug
<!--{if $val == 's'}-->
{$vals}
<!--{elseif $val == 'ss'}-->
{$vals}
<!--{/if}-->
<br />
{echo "des"}<br />
{$zsh}
<!--{loop $array $key $val}-->
{$val}<br />{$zsh}
<!--{/loop}-->
sed
{template test.htm}
hahah<br /> |
| zshtom | 2007-10-23 02:26 AM |
|
| 没人顶 自己顶 。。。。 |
| zshtom | 2007-10-25 03:57 AM |
|
| 没人理。。 哇哇哭 |
| songlv | 2007-10-25 04:44 AM |
|
我顶下吧
这行是凑字数的 |
| zshtom | 2007-10-25 11:39 AM |
|
| 。。。。。。 |
| songlv | 2007-10-29 06:06 AM |
|
| 大家都来臭下啊 |
| songlv | 2007-10-29 06:07 AM |
|
| 错了,大家都来丑下啊 |
| songlv | 2007-10-29 06:08 AM |
|
| 错了,大家都来瞅下啊 |
| zshtom | 2007-10-29 09:46 AM |
|
| 晕倒 。。。。 咋能打字错误呢 |
| songlv | 2007-10-29 10:13 AM |
|
| “抽”字挺难打啊 |
| songlv | 2007-10-29 10:13 AM |
|
| 又错了 是 “凑”字 |
| jonyare | 2007-10-29 11:58 AM |
|
| 我也来瞅下 |
|
| 恩 和dz差不多 呵呵 原来用dz的 用着习惯了 很舒服 没事自己写一个呵呵 |
| sorrowboy | 2007-11-10 02:22 PM |
|
嗯。。。顶一下
个人认为 php模板的话,还是少用好,如果是C写的,那就可以考虑
因为PHP代码写的模板,在处理大页面时,速度并不是很快
可以考虑VC分离,在view页面里面直接写入<?php echo $var;?>,<?php while($i>0){?>lalla<?php $i--;}?> 之类,而在controller里取得$var,$i后载入view页面,然后生成缓存文件或静态页面。
这样的话,速度应该会比大量地用 正则替换要快。 |
| zshtom | 2007-11-19 04:34 PM |
|
| 呵呵 楼上 自己看下 我编译了 只有替换模板的一次编译并不是正则替换 呵呵 |
| dreamstar | 2008-1-8 10:09 AM |
|
顶一下
就顶一下。 |
Powered by Discuz! Archiver 6.1.0
© 2001-2006 Comsenz Inc.
Processed in 0.006698 second(s), 2 queries |