今天看了下正規表示式,忽然覺得可以把我現在手上的企業建站系統改一下。不過改來改去覺得還是仿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 開...