Marko: HTML-Datei parsen und ausgeben - happig

Hi alle zusammen,

Ich hab eine Idee für ein kleines Templatesystem, und das soll so funktionieren:

In einer HTML Datei kann man Ausdrücke einsetzen, die später durch den Parser ersetzt werden sollen. Z.b:

<title>%TITEL%</title>

Die Parserdatei liest die HTML-Datei aus, ersetzt die Ausdrücke und gibt  es dann aus.
Hier Das Problem: Wie stell ich das ganze so an, dass in der Roh-HTML-Datei auch PHP-Code stehen kann?

Includen kann ich ja nicht, weil ich erst den Inhalt anpassen muss. Echo geht auch nicht, weil dann der PHP-Code nicht mehr interpretiert wird.

Hat jemand eine Idee?

Gruss, Marko

  1. 你好 Marko,

    Hier Das Problem: Wie stell ich das ganze so an, dass in der
    Roh-HTML-Datei auch PHP-Code stehen kann?

    Warum das Rad zweimal erfinden? Benutze Smarty...

    再见,
    克里斯蒂安

    --
    Sein oder nicht sein, das ist hier die Frage!
    1. Hi,

      Hier Das Problem: Wie stell ich das ganze so an, dass in der
      Roh-HTML-Datei auch PHP-Code stehen kann?

      Warum das Rad zweimal erfinden? Benutze Smarty...

      Weil ich es nur für was simples brauche und ich noch ein naiver kleiner Junge bin der spass daran hat, sich die Dinge selber zu bauen und aus den folgenden Problemen (wie dem hier) zu lernen? :)

      Weisst du jetzt vielleicht, wie das funktionieren könnte?
      Ich hab die (Notlösungs)Idee, dass ich weiteren PHP-Code, falls ich ihn brauche, in einer extra Datei speichere, und diese vom parser mittels eines Befehls includen lasse. Aber das will mir nicht so recht gefallen ;)

      Gruss, Marko

      1. Moin,

        Weisst du jetzt vielleicht, wie das funktionieren könnte?
        Ich hab die (Notlösungs)Idee, dass ich weiteren PHP-Code, falls ich ihn brauche, in einer extra Datei speichere, und diese vom parser mittels eines Befehls includen lasse. Aber das will mir nicht so recht gefallen ;)

        eval is Böse™, aber in dem Fall, das was du suchst.

        --
        Henryk Plötz
        Grüße aus Berlin
        ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
        ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
      2. 你好 Marko,

        Hier Das Problem: Wie stell ich das ganze so an, dass in der
        Roh-HTML-Datei auch PHP-Code stehen kann?

        Warum das Rad zweimal erfinden? Benutze Smarty...

        Weil ich es nur für was simples brauche und ich noch ein naiver kleiner
        Junge bin der spass daran hat, sich die Dinge selber zu bauen und aus den
        folgenden Problemen (wie dem hier) zu lernen? :)

        Hehe, guter Grund ;-)

        Weisst du jetzt vielleicht, wie das funktionieren könnte?

        Smarty benutzt eine Art Prae-Compiler. Die Template-Files werden umgewandelt
        in PHP-Code, der dann ausgefuehrt wird. Inline-PHP-Code kann dann einfach
        stehen gelassen werden. Aus <title>%TITLE%</title> koennte dann werden:

          
        <?php  
          echo "<title>";  
          if($variables['TITLE']) echo $variables['TITLE'];  
          else echo "unknown variable TITLE!\n";  
          echo "</title>";  
        ?>  
        
        

        Aehnliches gilt fuer {if} und dergleichen.

        再见,
        克里斯蒂安

        --
        Der Mund ist das Portal zum Unglück.
        1. Hi,

          Smarty benutzt eine Art Prae-Compiler. Die Template-Files werden umgewandelt
          in PHP-Code, der dann ausgefuehrt wird. Inline-PHP-Code kann dann einfach
          stehen gelassen werden.

          Hört sich sehr interessant an, aber wie soll das gehen? :S Also nicht das Precompilen, aber nachher den erstellten Code interpretieren lassen.
          Mit dem "bösen" Eval()? ;)

          Gruss, Marko

          1. 你好 Marko,

            Smarty benutzt eine Art Prae-Compiler. Die Template-Files werden
            umgewandelt in PHP-Code, der dann ausgefuehrt wird. Inline-PHP-Code kann
            dann einfach stehen gelassen werden.

            Hört sich sehr interessant an, aber wie soll das gehen? :S Also nicht das
            Precompilen, aber nachher den erstellten Code interpretieren lassen.
            Mit dem "bösen" Eval()? ;)

            Nein, entweder in einer Klasse und Methode kapseln und dann ausfuehren oder
            in einer Funktion kapseln und dann ausfuehren.

            再见,
            克里斯蒂安

            --
            Kommt ein Nullvektor zum Psychiater: "Herr Doktor, ich bin orientierungslos!"
        2. Ⓗⓐⓛⓛⓞ Christian!

          再见,
          克里斯蒂安

          Wie hast du "Christian Kruse" ins Chinesische (?) übersetzt?

          ℆, ℒacℎgas

          --
          Keine Verbesserung ist zu klein oder geringfügig, als dass man
          sie nicht durchführen sollte. (Adorno)
          1. 你好 Lachgas,

            再见,
            克里斯蒂安

            Wie hast du "Christian Kruse" ins Chinesische (?) übersetzt?

            Nur Christian, nicht Christian Kruse. Indem ich die Laute zusammengesucht
            habe und daraus das Wort zusammengesetzt habe. Die im Chinesischen uebliche
            Methode, Namen und dergleichen zu uebersetzen ;-)

            再见,
            克里斯蒂安

            --
            Fortune: The worst is enemy of the bad.
            1. Ⓗⓐⓛⓛⓞ Christian!

              Nur Christian, nicht Christian Kruse.

              Aha, ich hatte mir das so auch gedacht. Aber für Christian müsste es
              doch auch eine ähnliche Bezeichnung geben, nicht nur phonetisch über
              die Laute. Oder gibt es in China keinen "Christ"? ;-)

              ℆, ℒacℎgas

              --
              Keine Verbesserung ist zu klein oder geringfügig, als dass man
              sie nicht durchführen sollte. (Adorno)
              1. Hi Lachgas,

                Aha, ich hatte mir das so auch gedacht. Aber für Christian müsste es doch auch eine ähnliche Bezeichnung geben, nicht nur phonetisch über die Laute. Oder gibt es in China keinen "Christ"?

                Das kleine Problem wäre, dass es dann keine lautliche Ähnlichkeit mit dem Namen mehr gäbe.

                Viele Grüße
                Ma-ti-a-su Bigge