PHP模板二(仿DEDE)

2021-06-08 21:36:16 字數 2812 閱讀 9497

今天看了下正規表示式,忽然覺得可以把我現在手上的企業建站系統改一下。不過改來改去覺得還是仿dede的方式好一點。

於是開始看dede是如何處理標籤的。於是經過一上午的學習,我發現了乙個正規表示式

/(|]*}([^)/i
但是對我於這個系統來說,那就簡單得多,所以參照這個我做了以下的正規表示式
private $preg_string = "/(|)/si";

//tag陣列

$tag_arr = array();

//檔案內容

$file_content = file_get_contents($file);

//正則解析

preg_match_all($this->preg_string , $file_content , $m);

foreach($m[0] as $key => $value)

else

unset($va[0]);

foreach($va as $name => $item)

//標籤屬性陣列

$tag_arr[$key]['property'] = $property;

unset($property);

}var_dump($tag_arr);

$tag_arr陣列的格式如下

然後用php的str_replace方式替換$tag_arr['str']

以下是原始碼

stemplate.class.php

<?php 

class stemplate

/***將頁面寫入緩衝區然後輸入

*@param $file string 檔名

*/public function fetch($file)

else

//將檔案快取

$this->store_file($content , 'complie');

//匯入到當前

include $this->template_c_dir . $this->template_c_file; }

/***分析內容

*@return $complie_content string 編譯內容

*@param $file string 檔名

*/private function token($file)

else

unset($va[0]);

foreach($va as $name => $item)

//標籤屬性陣列

$tag_arr[$key]['property'] = $property;

unset($property);

} var_dump($tag_arr);

$complie_content = $this->token_array($tag_arr , $file_content);

return $complie_content; }

/***返回替換標籤後的內容

*@return $complie_content string 編譯內容

*@param $src_array string 屬性陣列

*@param $content string 檔案內容

*/private function token_array($src_array , $content) ?>' , $file_desc_content);

}else

else

$file_desc_content = str_replace($value['str'] , $tag_string , $file_desc_content);

unset($tag_string);}}

} return $file_desc_content; }

/***儲存檔案到編譯,快取

*@param $content string 內容

*@param $store_type string 方式

*/public function store_file($content , $store_type = 'cache')

else

$fp = fopen($desc_file , 'w') or die('can not open file');

fputs($fp,$content);

fclose($fp);

unset($fp); }}

?>

index.php

<?php 

require './stemplate.class.php';

$template = new stemplate();

$template->display('index.htm');

index.htm

正常輸出<?php echo '正常的php輸出'; ?>

foreach迴圈

<?php $temp_arr = array('aa' , 'bbb'); ?>

m.class.php

<?php 

class m

public function _field($property=null); ?>";

}}

DEDE模板中如何執行php指令碼和php變數的使用

在使用dede模板的時候,經常會需要直接對dede資料庫的底層字段進行處理,如果dede中沒有相應的函式的時候,往往就需要我們想辦法來處理了。舉例 我想取出資料表addonimages中的某一條記錄的typeid這個字段,然後在瀏覽器中輸出typeid乘以2的結果。注 這裡的typeid值為6 起初...

dede模板快取怎麼清除以及會員中心模板怎麼清除

今天在改會員中心的模板,傳上去發現沒變化,無論怎麼改,會員中心就是不變。想到了是模板快取的問題,會員中心模板怎麼清除?織夢為了提高模板的解析效率,不用每次都編譯一遍了,所以設定了快取。後台可以設定是否開啟快取,也能看到快取的目錄,如圖,系統設定,效能選項,選擇是否開啟。建議開啟,不然影響效能。想刪除...

dede在php7上空白

最近想看一本 想採集回來看,結果發現除了dedecms支援php7.0,其他主流cms基本上都不支援php7.0 在本地win7上除錯了一遍,沒有問題,放到linux伺服器上的時候,發現開啟任何頁面都是空白。於是開始找問題,修復。win7上 wamp,所有功能全部正常!centos7 lanmp 開...