kostenloser Webspace werbefrei: lima-city


preg_replace - Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    m*******t

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!