Template-System: HTML- und PHP-Code includen

dkf

Erfahrenes Mitglied
Hallo,

ich bin hier mal wieder kräftig am lesen, aber ich hab nicht so richtig das passende gefunden.

Also, folgendermaßen, und zwar:
Hab mir ein Template-System gebaut.

URL:
index.php?site=tt1.htm

index.php:
PHP:
<?php
	$content = implode('', file($site));
	$template = implode('', file('template.htm'));
	$template = str_replace ('{content}',$content,$template);
	echo $template;
?>

tt1.htm
PHP:
Test<br><br>
L<font color="#FF0000">AL</font>A<br>
<br>

<?php
print "Test";
?>

Und in meiner template.htm habe ich einen Platzhalter {content}.

Ich will jetzt veranlassen, dass der HTML-Code korrekt angezeigt wird UND dass der PHP-Code ausgeführt wird. Ist das zu machen?

Ich hoffe, mir kann jemand helfen...


Bis denne
Dennis
 
Gumbo hat gesagt.:
Mit den Funktionen zur Ausgabesteuerung wäre es sogar noch einfacher.

Ähm, wie soll man diese Funktion verstehen?
Bzw. wie siehst du den Verwendungszweck bei meinem Problem?

StefanR hat gesagt.:
http://de.php.net/eval ist genau das was du suchst. Musst halt nur schauen ob in der Var sowas wie <?php ?> usw. ist und alles was zwischen <?php ?> ist setzt du in das eval ()

Mit der eval -Funktion probiere ich schon die ganze Zeit rum...

Ich hab jetzt hier eine Klumpen an Quelltext in der Variable $content .
Hab jetzt mit str_replace alle <?php durch eval(" und alle ?> durch "); ersetzt. Dann schreibt er mir alles im Klartext hin. Nicht gut :confused:

Mir fehlt irgendwie nur der Denkansatz... ;)
 
Naja ich habe mit der Funktion eigentlich nocht gar nicht gearbeitet, aber die ist nicht ganz trivial weil du nämlich zum Beispiel Wie in einem normalen String die " escapen musst, wenn du " auch als Stringoperant genommen hast und du darfst auch nicht die ; vergessen hier mal ein simples Beispiel:
PHP:
$var="dkf";
eval("echo \"Hallo \".$var.\"\";")

Wie gesagt kam noch nicht in den Genuss von eval() :)
 
Ja, soweit ist die Funktion klar.
Bloß wenn ich jetzt ne Datei include, in der HTML und PHP drin ist, kommt man in schwulitäten... ;-)

Der Output sieht jetzt nämlich so aus:
PHP:
TEST

LALA

eval(" print \"Test\"; ");

Habe jetzt in meine Content-Datei den HTML-Quelltext (ohne \") und den PHP-Code (mit \").

Dann noch
PHP:
	$template = str_replace ('<?php','eval("',$template);
	$template = str_replace ('?>','");',$template);
und er schreibt (siehe oben) das ganze Zeugs in Klartext...
 
Achso ja das ist auch klar, weil du müsstest jetz den Code der zwischen <?php ?> steht zwischen speichern und denn explizit in eval einfügen. Da du ja jetzt nen String daraus machst und nicht die Funktion aufrufst. :)
 
Hmm, durch diese Funktion steige ich jetzt noch nicht so ganz durch...
Habe jetzt wieder meine komplette Seite und der PHP-Code steht in etwa so da drin:
PHP:
[...]
<br>
L<font color="#FF0000">AL</font>A - HTML<br>
<br>

<?php
print "PHP-Code 1";
?>

LALA2 - HTML

<?php
print "PHP-Code 2";
?>
</td>
[...]

d.h., der PHP-Code wird immer noch nicht ausgeführt.
Ist es denn richtig, dass ich das ganze dann mit echo $template; ausgebe, oder muss ich einen anderen Befehl benutzen, dass der PHP-Code ausgeführt wird?
 
Zurück