我已經在PHP中創建了一個簡單的模板「引擎」來將PHP生成的數據替換爲HTML頁面。下面是它如何工作的:PHP - 我需要一些幫助我的正則表達式
我主要的模板文件,我有變量,像這樣:
<title><!-- %{title}% --></title>
我然後將數據分配到這些變量的主要頁面加載
$assign = array (
'title' => 'my website - '
);
然後,我有爲內容頁面加載單獨的模板塊。以上只是處理頁眉和頁腳。在這些「內容模板文件」中的一個,我有變量,像這樣:
<!-- %{title=content page}% -->
一旦得到執行,主要的模板數據進行編輯,包括頁面內容變量導致:
<title>my website - content page</title>
爲此,它會用下面的代碼:
if (preg_match('/<!-- %{title=\s*(.*?)}% -->/s', $string, $matches)) {
// Find variable names in the form of %{varName=new data to append}%
// If found, append that new data to the exisiting data
$string = preg_replace('/<!-- %{title=\s*(.*?)}% -->/s', null, $string);
$varData[$i] .= $matches[1];
}
這基本上消除了模板變量,然後將可變數據分配給現有變量。現在,這一切都很好。我遇到的問題是嵌套模板變量。如果我這樣做:
<!-- %{title=content page (author: <!-- %{name}% -->) -->
該模式有時會弄亂每個變量的開始和結束標記。
如何修復我的正則表達式以防止出現這種情況?
謝謝。
我對正則表達式並不是很滿意,所以如果你能推薦一個替代方案,那麼我就是全力以赴。我還能如何完成我在做的事情? – dave 2010-06-23 01:30:29