Hi!
Ich hab mir eine kleine Funktion geschrieben, die Template-Variablen ersetzen sollen... jedoch klappt das nicht ganz so, wie ich will
Ich hab mir eine kleine Funktion geschrieben, die Template-Variablen ersetzen sollen... jedoch klappt das nicht ganz so, wie ich will
PHP-Code:
<?
function replace_variables($content, $page=array()) {
$i_start = strpos($content, "[");
while($i_start) {
unset($var_name, $new_var);
$i_end = strpos($content, "]", $i_start++);
if(!$i_end) break;
//hier scheitert das script
if(strpos($content, "[", $i_start++) < $i_end) {
$i_start = strpos($content, "[", $i_start++);
continue;
}
/* wenn man diese if-abfrage weglaesst, dann klappt alles, solang keine offene variable vorhanden ist...
wuerde [ [title] beispielsweise dortstehn, so klappt es schon nichtmehr */
$var_name = substr($content, $i_start++, $i_end+1-$i_start);
//echo htmlspecialchars(substr($content, $i_start-5, $i_end+1-$i_start+5));
if($var_name == 'content') {
$i_end = $i_end++;
}elseif($var_name == 'title') { //title
$new_var = $page['title'].' - '.$page['projectname'];
}elseif($var_name == 'page_name') {
$new_var = $page['title'];
}elseif($var_name == 'page_key') {
$new_var = $page['page_key'];
}elseif(substr($var_name, 0, strlen('link')) == 'link') { //link
$page = substr($var_name, strlen('link '));
!$page && $page = 'startpage';
$new_var = '?page='.urlencode($page);
}else {
if($this->template_variables[$var_name]) {
$new_var = $this->template_variables[$var_name];
}else {
//
}
}
if($new_var) {
$content = substr($content, 0, $i_start-2).$new_var.substr($content, $i_end+1);
$i_end = $i_end-strlen($var_name)+strlen($new_var);
}
$i_start = strpos($content, "[", $i_end);
}
return $content;
}
?>

Kommentar