我遇到了一个模板生成器函数的问题,该函数无法获取某些动态数据并用数据替换HTML中的标记。
我在Main类中创建了一个函数,用于设置我定义的标记
function GetMarkers($markers = array()) {
foreach($markers as $key => $value) {
$this->markers[strtoupper($key)] = $value;
}
return $this->markers;
}
我在class.rooms.php中定义了一些标记
$markersRoom = array();
$markersRoom["###ROOMS###"] = '<a href="#" onclick="return showRBox();" class="boxOpener">'. $rTxt .'</a>';
$markersRoom["###ROOMS###"] .= '<div class="roomBox">';
$markersRoom["###ROOMS###"] .= '<ul class="roomItems">';
while($row = mysql_fetch_array($sql)) {
$markersRoom["###ROOMS###"] .= '<li>';
$markersRoom["###ROOMS###"] .= '<p><a href="index.php?page=sr&room='. $row["room"] .'&floor='. $_GET["floor"] .'&wall='. $_GET["wall"] .'&envi='. $_GET["envi"] .'&fpanel='. $_GET["fpanel"] .'">'. $row["descr"] .'</a></p>';
$markersRoom["###ROOMS###"] .= '</li>';
}
$markersRoom["###ROOMS###"] .= '</ul>';
$markersRoom["###ROOMS###"] .= '</div>';
Main::GetMarkers($markersRoom);
}
并将它们放入GetMarkers函数中。
这些标记将用于我的TemplateGenerator函数
读取的HTML模板中function TemplateGenerator($template) {
/* Get content from the html template */
$data = file_get_contents($template);
if(isset($this->markers)) {
/**************************************************
* Match each key in $this->markers array
* and replace with the correct value
***************************************************/
foreach($this->$markers as $key => $value) {
if(preg_match("/". preg_quote($key) ."/", $data, $matches)) {
$data = str_replace($key, $value, $data);
} else {
$data = $data;
}
}
Main::TxtOutput($data);
} else {
if(!empty($data)) {
echo $data;
} else {
die("An error occured");
}
}
}
当我在GetMarkers()中执行print_r($markers)
时,我可以正确地看到来自$markersRoom["###ROOMS###"]
的所有数据,但是当我在TemplateGenerator中执行此操作时,数据会丢失。
在我的index.php中使用
在开关($ page)内调用TemplateGenerator$main->TemplateGenerator("templates/rooms.html");
其中rooms.html包含标记### ROOOMS ###
它正确读取HTML文件,但没有任何来自GetMarkers的数据放入其中,因此只输出### ROOMS ###
我错过了什么地方吗?