[PHP] preg_replace & template

Ich habe ein Template erstellt und den Parser aus einem Tutorial von hier genommen:
Meine Frage: auf einer (mit den Templates erstellten Seite) will ich einem PHP Code über die Templates einfügen lassen:

PHP:
<?php
 include("tpl-parser.inc.php");
 include("config.php");
 include("templates.php");
switch ($HTTP_GET_VARS['act'])
{
case 'home':
 $var_array = array("bgcolor" => $bodycolor,
                    "text" => $text,
                    "tablecolor" => $tablecolor,
                    "tdtop" => $tdtop,
                    "tdbottom" => $tdbottom,
                    "home" => $home);
break;
}
 $tpl = new parser($template, $var_array);
?>

Der PHP formatierte Text befindet sich in der Datei "templates.php" und dort in der Variable $home. Wie bekomme ich das ausgegeben.
Mein Problem ist, das in der $home auch echo " " befehle vorkommen, d.h. es so aussieht:

PHP:
<?
$home = "<?
include '../connect.php';
include '../config.php';
$result = mysql_query('SELECT * FROM news ORDER BY ID ASC');
while($row = mysql_fetch_array($result)) 
{
echo "<table bgcolor=#444444 cellspacing=1 border=0 Align='center' Width='90%' Class='tabelle'>\n";
echo "<tr>\n<td BGColor=". $tdtop ." width=85%>\n ".$row['topic']." - ".$row['name']."\n</td>\n<td align=right BGColor=". $tdtop ." width=*>\n ".$row['datum']."</td>\n</tr>\n";
echo "<tr>\n<td BGColor=". $tdbottom ." colspan='2'>\n ".$row['beitrag']."\n</td>\n</tr>\n";
echo "</table>\n";
}
?>";
?>
Das geht aber nicht, weil in der Variable $home ja nochmal " enthalten sind. wie kann ich die so hinfiltern, dass mir die Mysql Abfrage über die templates ausgegben wird? Ich hoffe ihr versteht das Problem

Gruss MastaDaDesasta
 
Eine Variable kann afaik nur einen bestimmten Wert, nicht eine Funktion/Anweisung oder gar ein PHP Script enthalten.

Definiere Funktionen, wenn nötig und generiere den Inhalt des $home - Teils möglichst so,dass du dann ein einfaches echo $home bringen kannst, und darin KEIN PHP steht.

Echo-Anweisungen sind ja dazu da, etwas an den Browser ------> CLIENT! zu senden, von da an ist PHP weg!
 
@MastaDaDesasta: Da könnte dich evtl. die Funktion eval() weiterbringen.
Es ist allerdings höchste Vorsich geboten, dass es
nicht irgendwie möglich wird dann über dieses Script
beliebigen PHP Code auf deinem Server auszuführen.

Original geschrieben von eLorFiN
Eine Variable kann afaik nur einen bestimmten Wert,
nicht eine Funktion/Anweisung oder gar ein PHP Script
enthalten.
Und was ist dann mit all den schönen Handlern und Arrays
die man in einer Variable speichert resp. dieser zuweist ? ;)
 
Okay neue Frage, gleiches Thema... ich hab es jetzt so, dass jetzt nicht 1 Vorgabe habe welches auf {} durchsucht wird und ersetzt sondern mehrere, dabei auch eine Vorgabe, die eine php mysql abfrage enthält...
diese wird aber nicht mehr ausgeführt, sobald die seite durch den parser läuft... wie kann man das am geschicktesten machen, dass die Seite auf {} durchsucht wird und die Variablen reingeschrieben werden, der php code jedoch auch ausgeführt wird...
vielleicht etwas umständlich ausgedrückt... versteht einer mein Problem... bin selber absoluter php anfänger

und kann mir einer erklären was die Funktion:
PHP:
global $var;
return <<<EOF
html code
EOF;

macht und wie sie funktioniert?


Gruss MastaDaDesasta
 
Zuletzt bearbeitet:
Zurück