我有關於HTML模板的問題..我已創建一個模板函數替換標誌物與從數據庫內容的HTML模板..寫輸入值轉換成HTML模板
/***********************************************************
* TemplateGenerator will match markers in a defined html
* template and replace them with corresponding data
* i.e. ###MARKER_1### in html template will be replaced
* with data in the ###MARKER_1### array key defined
* in GetMarkers function.
*
* @param string | The html template
* The template can contain all the html the
* layout needs - matched markers will be replaced.
************************************************************/
public static function TemplateGenerator($template) {
/* Get content from the html template */
$data = file_get_contents($template);
if(isset(self::$newmarkers)) {
/**************************************************
* Match each key in $this->markers array
* and replace with the correct value
***************************************************/
foreach(self::$newmarkers as $key => $value) {
if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
$data = str_replace($key, $value, $data);
} else {
$data = $data;
}
}
return $data;
} else {
if(!empty($data)) {
echo $data;
} else {
die("Der er sket en fejl med genereringen af siden");
}
}
}
我用這函數在一個PHP通訊應用程序..這工作幾乎完美,但是當我創建的應用程序,我沒有考慮編輯信函的可能性(爲什麼,我不知道)。
我有一個帶有輸入字段的HTML模板(standard.html)來創建一個簡報。
<h1 style="background-image: url(gfx/icons/new.png); background-position: left; background-repeat: no-repeat;">Opret nyhedsbrev - ###THETMP###</h1>
<form action="index.php?page=create" method="post" enctype="multipart/form-data">
<label for="letter_headline">Overskrift:</label> <input type="text" name="letter_headline" id="letter_headline" value="" /><br />
<label>Modtagere: </label> <select name="recievers[]" multiple="multiple" size="5">###RECS###</select><br />
<label>Billede</label> <input type="file" name="letter_image[0]" id="letter_image" value="" /><br />
<label for="letter_content">Indhold</label> <textarea name="letter_content" id="letter_content" cols="50" rows="15"></textarea><br />
<label for="letter_link">Link</label> <input type="text" name="letter_link" id="letter_link" value="" /><br />
<label for="letter_link_txt">Linktekst</label> <input type="text" name="letter_link_txt" id="letter_link_txt" value="" /><br />
<input type="hidden" name="template_to_use" value="standard.html" />
<input type="submit" value="Opret nyhedsbrev" name="create" />
</form>
當我選擇,我想創建一個標準的通訊中,TemplateGenerator功能將輸出此模板即在標記### RECS ###一recievers列表。
我有有下列的表稱爲newsletter_fields:
field_uid | field_name | field_content
其中field_name將包含輸入字段的名稱,即letter_headline和field_content將在創建該字母時具有寫入輸入字段的內容,即「這是標題」。
我的問題是,如果我可以在editletter函數中使用同一個HTML文件,它將只替換輸入字段中的value=""
,即letter_headline輸入中的value="This is a headline"
。
感謝這個答案用它來代替STRAT!我會考慮這一點。我並不認爲它本身就是一個模板引擎,而只是一個將某些值放入HTML模板中某些標記的函數。這是我創建時的想法,它的工作原理如下:) 但我很欣賞批評!我在這裏學習:) – 2011-12-23 08:15:03