Tom: Kleiner Nachtrag zum passiven Template

Beitrag lesen

Hello,

ich will den Fehler eben noch beseitigen...
Man sieht ihn ja nicht auf den ersten Blick:

Ein passives Template für PHP könnte z.B. so aussehen:

#--- templatedatei.html ---

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title><!--{TITLE}--></title>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  <style type="text/css">
     <!--{CSS-general}-->
  </style>
</head>
    <body>
        <!--{BODY-head}-->
        <!--{BODY-content}-->
        <!--{BODY-bottom}-->
    </body>
</html>

#--------------------------

Die Daten, die vom Programm zusammengestellt wurden, können nun durch ein einfaches str_replace() dort eingestanzt werden, ohne die Programmkontrolle an das Template zu übergeben.

<?php  ### template-engine.php ###

$html = file_get_contents('templatedatei.html');

$_output = array();

$_output['<!--{TITLE}-->'] = 'mein erstes passives Template';
    # ...
    $_output['<!--{BODY-content}-->] = '<p>hier kommt dann der Content</p>';

# ---[1]--- die beiden folgenden Zeilen zum Testen mal auskommentieren
      $_output['<'.'?php'] = '<!-- php: ';   ## PHP-Starttags beseitigen
      $_output['?'.'>']    = ' -->';         ## PHP-Endtags beseitigen

$html = str_replace(array_keys($_output),$_output,$html);
    echo $html;

?>

#---------------------------

[1] Die Tag-Erstzugnen für PHP-Tags usw. müssen immer als letzte Elemente ins Replace-Array eingetragen werden. Dann kann man bedenkenlos auch andere Subtemplates einstanzen, die ihrerseits eventuell wieder unerlaubte PHP-Tags enthalten.

Das ist mit str_replace() hier natürlich  ur ein einfaches Beispiel.
Wenn man es ausbauen will, wird man wohl eher preg_replace() benutzen.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de