include, php quellcode wird angezeigt

Snowowl

Erfahrenes Mitglied
Hi,
ich habe mich mal heute rangemacht ein bisschen mit Templates zu arbeiten.
Ich lasse die temp2.php durchsuchen und einträge wie z.B. ###CONTENT### mit str_replace(); ersetzen mit:
PHP:
file_get_contents("inc/".$content_inc.".php");
Also ich habe ein Array algelegt, wo das zu ersetzende und das "neue" drin steht.

Bei html seien geht das wunderbar, doch bei php Seiten, zeigt er mir den Quellcode an.
Wie kann ich das ändern, also, dass er mir dann das richtige ausgibt?
Vielen Dank schonmal im Vorraus!
Gruß,
Snowowl

[edit]
Mein 111. Beitrag ^^ ;) :)
[/edit]
 
Wenn Du die Seite so einliest und dann ausgibst wird der enthaltene PHP-Code nicht ausgefuehrt. Falls Du auf include() verzichten willst/musst dann schau Dir doch mal eval() an.
 
Kann ich das mit file_get_contents machen?
Weil das ergibt ein Error:
Parse error: parse error, unexpected '<' in E:\Test Umgebung\xampp\htdocs\template\config.php(12) : eval()'d code on line 1
Oder muss ich das dann mit file(); machen?
 
file() ist dafuer eher ungeeignet wuerde ich sagen.
Der an eval() uebergebene Code darf kein <?php ?> enthalten.

Beispiel wie's falsch ist:
PHP:
eval("<?php echo 'test'; ?>");
Beispiel wie's richtig ist:
PHP:
eval("echo 'test';");
 
Danke :)
so funktioniert es zwar, jedoch wird es an der falschen Stelle ausgegeben. Genau das gleihce Problem hatte ich auch mit include();
Mein Quellcode der index.php
PHP:
<?php
include("config.php");
include("content/temp.php");
$file = file("content/temp.html");
$template = implode("", $file);
foreach($replace as $old => $new)
{
	$template = str_replace ("###".$old."###", $new, $template);
}
echo $template;
?>
in der config.php steht dies:
PHP:
<?php
if(!isset($_GET['page']) || empty($_GET['page']))
{
	$content_inc = "home";
}
else
{
	$content_inc = $_GET['page'];
}
$navi = file_get_contents("content/navi.html");
$content = file_get_contents("inc/".$content_inc.".php");
$content = eval($content);
?>
Der inhalt der home.php wird also ganz oben ausgegeben, das ist mein Problem. Jedoch wenn ich das eval weglasse und den php code anzeigen lasse, dann ist es an der richitgen Stelle!
Wie kann ich das ändern?
 
eval() fuehrt den Code direkt aus. Wenn dort Daten ausgegeben werden, dann werden diese direkt ausgegeben.
Ein Wert wird nur zurueckgegeben wenn der Code ein return enthaelt.
Wenn Du die Ausgabe von eval() abfangen willst, dann sollten Du mit der Output Control arbeiten.
 
Zurück