ホームページ > バックエンド開発 > PHPチュートリアル > 私のテンプレート エンジンを見せてください。購入へようこそ。

私のテンプレート エンジンを見せてください。購入へようこそ。

WBOY
リリース: 2016-06-13 12:55:43
オリジナル
716 人が閲覧しました

私のテンプレート エンジンを披露してください。購入へようこそ

この投稿は xuzuning によって最終編集されました: 2012-05-23 15:02:49 それ以上は言わずに、コードにアクセスしてください
template.php (3.55K)
<?php<br />
クラス テンプレート {<br />
protected $data = array();<br />
protected $drillmode = 0;<br />
関数 __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>
//新しい実行メソッドを追加します <br>
関数 run() {<br>
//include "data://," .join('<', $this->data);<br>
eval('?>' . join('<', $this->data));<br>
}<br>
関数 find($pattern) {<br>
$this->pattern = $pattern;<br>
return array_filter($this->data, array($this, 'find_callback'));<br>
}<br>
プライベート関数 find_dsn() {<br>
foreach($this->find("#bdsnb#i") as $k=>$v) {<br>
$t = $this->find_tag($tag = strtok($v, ' '), $k);<br>
end($t);<br>
$dsn[] = array( $k, key($t) );<br>
}<br>
if($this->ドリルモード) {<br>
foreach($this->find("#bdrillb#i") as $k=>$t) {<br>
foreach($dsn as $i=>$v) if($k < $v[1] && $k > $v[0]) $t = $i;<br>
$drill[] = $dsn[$t];<br>
unset($dsn[$t]);<br>
}<br>
}<br>
foreach($dsn as $v) {<br>
list($start, $end) = $v;<br>
preg_match('/bdsns*=s*([^s>] )/i', $this->data[$start], $reg);<br>
$this->data[$start] = str_replace(' '.$reg[0], '', $this->data[$start]);<br>
<br>
$m =explode(',', trim($reg[1], ''"')) array(0, 0, '');<br>
$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){?>";<br>
$code_end = "?php }$_var=array_pop($_st);?>";<br>
switch($m[1]) {<br>
ケース 0:<br>
$t =explode('>', $this->data[$start]);<br>
$t[1] = "
$this->data[$start] = join('>', $t);<br>
$this->data[$end] = "$code_end<" .
休憩;<br />
ケース 1:<br />
$this->data[$end] .= "<$code_end";<br />
$this->data[$start] = "$code_start<" .
休憩;<br />
デフォルト:<br />
$n =round(100/$m[1]);<br />
$this->data[$end] .= "</dt><$code_end";<br />
$this->data[$start] = "$code_start<dt style='float:left;width:$n%;margin:0px;padding:0px'><" . $start];<br />
休憩;<br />
}<br />
}<br />
if($this->drillmode) foreach($drill as $v) {<br />
list($start, $end) = $v;<br />
preg_match('/bdsns*=s*([^s>] )/i', $this->data[$start], $reg);<br>
$this->data[$start] = str_replace(' '.$reg[0], '', $this->data[$start]);<br>
$m =explode(',', trim($reg[1], ''"')) array(0, 0, '');<br>
$code = '';<br>
for($i=$start; $i
$code .= '<br> $this->data[$i];<br>
if($i > $start) unset($this->data[$i]);<br>
}<br>
$code = addlashes($code); <br><div class="clear"></div>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート