preg_replace - Problem
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
array
ausgabe
code
datei
display
fehlermeldung
funktion
grad
helfen
info
leute
problem
stellen
verwenden
-
Hallo Leute,
ich komme gerade einfach nicht weiter, ich bin mir sicher, dass es eine einfache lösung gibt, aber ich komm grad nicht drauf.
also, ich habe ein array mit allgeimeinen infos, nun hab ich dann noch ein template in dem dann einige dieser infos ersetzt werden sollen, nur es funktioniert nicht so wie ich es will:
$CONFIG = array(); $CONFIG['titel_startseite'] = "Startseite"; $CONFIG['stylesheet'] = "/styles/style.css"; function ausgabe($template) { global $CONFIG; $template_code = file_get_contents("templates/".$template); $template_code = preg_replace('#\{CONFIG_(.*)\}#', $CONFIG['\1'], $template_code); echo $template_code; }
und die template datei:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>{CONFIG_titel_startseite}</title> <link rel="stylesheet" type="text/css" href="{CONFIG_stylesheet}"> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> </head>
das ganze ist jetzt natürlich stark vereinfacht, normalerweise wäre die funktion ausgabe noch in einer klasse, ....
so und jetzt aber zum problem: die stellen in der Templatedatei findet preg_replace zwar ersetzt sie aber durch nichts, er entfernt sie also, ich hab auch schon probiert preg_replace('#\{CONFIG_(.*)\}#', $CONFIG[$1], $template_code); zu verwenden, nur dann kommt eine fehlermeldung.
EDIT: so, jetzt endlich nach sehr langem überlegen ist mir eine lösung eingefallen, ist zwar etwas umständlicher, geht aber
function display($template) { global $CONFIG; $template_code = file_get_contents("templates/".$template); preg_match_all('#\{CONFIG_(.*)\}#', $template_code, $template_treffer, PREG_PATTERN_ORDER); $ersetzungen = array(); $pattern = array(); foreach($template_treffer[1] as $jetzt) { $pattern[] = '#\{CONFIG_'.$jetzt.'\}#'; $ersetzungen[] = $CONFIG[$jetzt]; } $template_code = preg_replace($pattern, $ersetzungen, $template_code); echo $template_code; }
Ich hoffe ihr könnt mir helfen.
lg, Tobias
Beitrag zuletzt geändert: 23.7.2009 21:45:11 von moonfight -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage