Mit str_replace String in PHP-Code umwandeln

uhuwe

Mitglied
Folgendes Problem:

Es müßte doch irgendwie möglich sein mit str_replace Template-Platzhalter durch PHP-Code zu ersetzen.

Zum Beispiel:

[rows foren] ersetzen durch <? while($read=mysql_fetch_array($foren):?>
{id} ersetzen durch <?=$read['id'];?>
{description} ersetzen durch <?=$read['desrption'];?>
[/rows] ersetzen durch <? endwhile;?>

Ich habe daß mal so gemacht:
PHP:
//datei einlesen
$template=implode('',file('template/list.tpl'));

$template=str_replace('[rows foren]','<? while($read=mysql_fetch_array($foren):?>',$template);
$template=str_replace('{id}','<?=$read["id"];?>',$template);
$template=str_replace('{description}','<?=$read["description"];?>',$template);
$template=str_replace('[/rows]','<? endwhile;?>,$template);

Und das hat aber nicht funktioniert.
Kennt jemand eine andere- bzw. bessere Lösung

PS: Mit regulären Ausdrücken kenne ich mich nicht aus.
 
Meine Template-Datei sieht so aus:

[rows foren]
<a href=list.php?{id}>{description}</a><br>
[/rows]

So, normaler Weise müßte ich jetzt die Forenliste erhalten.
Stattdessen wird mir so etwas ausgegeben:

<? while($read=mysql_fetch_array($foren):?><?=$read["description"];?>
<? endwhile;?>
 
Du verarbeitest lediglich eine Zeichenkette. Und diese wird vom PHP-Interpreter auch nur wie eine Zeichenkette behandelt. Wenn du nun möchtest, dass eine Zeichenkette als PHP-Quellcode interpretiert wird, könntest du dies mit der eval()-Funktion machen.
 
Könnte mir bitte jemand sagen, wie ich die eval-Funktion einsetzen muß?

Ich habe mir die Beschreibung angeschaut, einiges ausprobiert und komme trotzdem nicht weiter.
 
Zuletzt bearbeitet:
Benutze mal nur die „ausführlichen“ PHP-Tags (<?php … ?>) und probier folgenden Code:
PHP:
eval(preg_replace('/<\?php(.*)\?>/s', '$1', $string));
 
Gumbo hat gesagt.:
Benutze mal nur die „ausführlichen“ PHP-Tags (<?php … ?>) und probier folgenden Code:
PHP:
eval(preg_replace('/<\?php(.*)\?>/s', '$1', $string));

Ich habe das jetzt mal gemacht und erhalte folgende Fehlermeldung:

Parser error: syntax error, unexpected '<' in D:\list.php(21) : eval()'d code on line 1
 
Zuletzt bearbeitet:
Da machst du:

PHP:
ob_start(); 
include_once( "inc/menu.php");
$menu = ob_get_contents();
ob_end_clean();

das funktioniert.

MFG Texx
 
Zurück