Frage zum Tutorial "Template Parser"

Na bestens.. :-)

Vielen Dank!

JEDOCH:

Er gibt mir nun PHP Code aus, nur nicht an der richtigen Stelle. Anstatt den Content-Container zu füllen (Dort steht die $ {CONTENT}) schreibt er den Code an den anfang des html-Dokuments...

Gibt es dafür eine Lösung?
 
Gibst du die gewünschte Ausgabe des Codefragments aus der Datenbank auch brav mit return zurück? Oder gibst du sie - meine Vermutung - mit echo aus?
 
Also ich schreibe ja nur die Variable... {CONTENT}, welche im tpl-parser mit echo zurückgegeben wird:

Code:
<?php
 
 Class parser
 {
  var $template;
  var $temp_content;

  function parser($template, $var_array)
  {
   $this->template = $template;
   $this->temp_content = file($this->template);
   $parsed = $this->rplc($var_array);
   echo(implode("", $this->temp_content));
  }

  function rplc($var_array)
  {
   foreach($var_array as $key => $value)
   {
    //$regex[var_name] : {VARIABLE}
    $regex['var_name'] = "#{[[:space:]]*?(".strtoupper($key)."){1,}?[[:space:]]*?}#si";
    $this->temp_content = preg_replace($regex['var_name'], $value, $this->temp_content);
   }
  }
 }
?>

Wenn ich echo mit return tausche, kommt nur noch der PHP-Teil aus der DB. Alle HTML+CSS-Inhalte bleiben aus.
 
Nein, ich meinte jetzt eher im Codefragment, das du in der Datenbank gespeichert hast. Das, welches in deinem Fall jetzt die Heise Newsticker RDF auswertet und formatiert ausgibt.
 
Hallo Matthias,

ich habe einen include in der db:

include ("con_start.php");

darin habe ich dann noch einen include:

<?php
include ("inc_heise.php");
?>


inc_heise.php:

Code:
<?php
$fcontents = join ('', file ('http://www.heise.de/newsticker/heise.rdf'));

function shorter($out)
{
	if(strlen($out)>35){$out=substr($out,0,100).'';}return htmlentities(stripslashes($out));
}

echo preg_replace("/((.*<\/channel>|)\s*(-|)\s*<item>\s+<title>(.+?)<\/title>\s+<link>(.+?)<\/link>\s*(<\/item>|)\s*(<\/rdf:RDF>|))/se","'<img src=\"r_pfeil.gif\" border=\"0\">&nbsp;&nbsp;<a href=\"'.trim('\\5').'\"target=\"_blank\"  onFocus=\"if(this.blur)this.blur()\">'.shorter('\\4').'</a>&nbsp;<br><br>'",$fcontents);
?>

wenn ich dort die echo preg_replace... in return ändere, kommt im Content nichts mehr... Der Content bleibt inhaltslos...

Hast du noch eine Idee?
 
Vielleicht wenn du das echo so lässt und stattdessen das hier in die Datenbank schreibst?

PHP:
ob_start();
include ("con_start.php");
$content = ob_get_contents();
ob_end_clean();
return $content;

Ist zwar ein bisschen umständlich, aber wenn's anders nicht klappen will... könntest höchstens noch ohne Includes arbeiten und den gesamten Code zur Erzeugung der Ausgabe in die Datenbank packen. Dann aber halt doch wieder mit return.
 
Zurück