• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

晒一上小弟我的模板引擎,欢迎拍砖

php 搞代码 3年前 (2022-01-24) 18次浏览 已收录 0个评论

晒一下我的模板引擎,欢迎拍砖

本帖最后由 xuzuning 于 2012-05-23 15:02:49 编辑

别不多说,直接上代码
template.php(3.55K)

<?php<br />class template {<br />  protected $data = array();<br />  protected $drillmode = 0;<br />  function __construct($s) {<br />	if(file_exists($s)) $s = file_get_contents($s);<br />	$this->find_var($s);<br />	$this->data = explode('<', $s);<br />	$this->data[0] = '<?php $_st=$_var=array();?>';<br />	$this->find_dsn();<br />  }<br />  //新增 run 方法,<br />  function run() {<br />	//include "data://," . join('data);<br />	eval('?>' . join('data));<br />  }<br />  function find($pattern) {<br />	$this->pattern = $pattern;<br />	return arra<p>5本文来源gao!daima.com搞$代!码#网#</p><pre>搞代gaodaima码

y_filter($this->data, array($this, ‘find_callback’));
}
private function find_dsn() {
foreach($this->find(“#\bdsn\b#i”) as $k=>$v) {
$t = $this->find_tag($tag = strtok($v, ‘ ‘), $k);
end($t);
$dsn[] = array( $k, key($t) );
}
if($this->drillmode) {
foreach($this->find(“#\bdrill\b#i”) as $k=>$t) {
foreach($dsn as $i=>$v) if($k $v[0]) $t = $i;
$drill[] = $dsn[$t];
unset($dsn[$t]);
}
}
foreach($dsn as $v) {
list($start, $end) = $v;
preg_match(‘/\bdsn\s*=\s*([^\s>]+)/i’, $this->data[$start], $reg);
$this->data[$start] = str_replace(‘ ‘.$reg[0], ”, $this->data[$start]);

$m = explode(‘,’, trim($reg[1], ‘\'”‘)) + array(0, 0, ”);
$code_start = “?php if(isset(\$_var))\$_st[]=\$_var;foreach((isset(\$_var[‘$m[0]’])?\$_var[‘$m[0]’]:\$this->$m[0](‘$m[1]’,’$m[2]’)) as \$_key=>\$_var){?>”;
$code_end = “?php }\$_var=array_pop(\$_st);?>”;
switch($m[1]) {
case 0:
$t = explode(‘>’, $this->data[$start]);
$t[1] = “<$code_start" . $t[1];
$this->data[$start] = join(‘>’, $t);
$this->data[$end] = “$code_enddata[$end];
break;
case 1:
$this->data[$end] .= “<$code_end";
$this->data[$start] = “$code_startdata[$start];
break;
default:
$n = round(100/$m[1]);
$this->data[$end] .= “

<$code_end";
$this->data[$start] = “$code_start

data[$start];
break;
}
}
if($this->drillmode) foreach($drill as $v) {
list($start, $end) = $v;
preg_match(‘/\bdsn\s*=\s*([^\s>]+)/i’, $this->data[$start], $reg);
$this->data[$start] = str_replace(‘ ‘.$reg[0], ”, $this->data[$start]);
$m = explode(‘,’, trim($reg[1], ‘\'”‘)) + array(0, 0, ”);
$code = ”;
for($i=$start; $i<=$end; $i++) {
$code .= ‘data[$i];
if($i > $start) unset($this->data[$i]);
}
$code = addslashes($code);


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:晒一上小弟我的模板引擎,欢迎拍砖
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址