PHP in gemischtem String ausführen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PHP in gemischtem String ausführen

    Hallo,

    ich habe in einer Datei - content.ct - verschiedene Datensätze gespeichert, die ich über ein PHP-Script wahlweise ausgebe. (Soweit nichts Dramatisches.) Ein Datensatz könnte z.B. so aussehen:

    Titel|:|<p>Wir wünschen Ihnen viel Spaß mit dieser Homepage</p>

    Problematisch wird es jedoch, wenn der Datensatz selbst PHP-Code enthält. Solch ein Datensatz hätte vielleicht dieses Aussehen:

    Datensatz mit PHP|:|<p>Wir wünschen Ihnen viel Spaß mit dem <?PHP echo "PHP-Content";?> auf dieser Seite</p>

    Beim Anzeigen im Browser wird der PHP-Teil (natürlich) nicht dargestellt. Gibt's da eine Möglichkeit, dies zu ändern?

    SuperUser


  • #2
    http://www.php.net/eval

    hth
    Ich denke, also bin ich. - Einige sind trotzdem...

    Comment


    • #3
      So, sehr schön. Danke erstmal für die Antwort. Leider geht's so wohl nicht.

      PHP Code:
      <?php
      $str 
      '<p>Wir wünschen Ihnen viel Spaß mit dem <?PHP echo "PHP-Content";?> auf dieser Seite</p>';
      echo 
      $str;
      eval (
      $str);
      echo 
      $str;
      ?>
      macht "Parse error: parse error, unexpected '<' in c:\webdesign\4momo\demo\test.php(4) : eval()'d code on line 1".

      Was ist da falsch?

      MoMo

      Comment


      • #4
        Du darfst mit dem eval nur PHP-Code ausführen.

        Du kannst es allerdings austricksen:
        PHP Code:
        <?php
        $str 
        '<p>Wir wünschen Ihnen viel Spaß mit dem <?PHP echo "PHP-Content";?> auf dieser Seite</p>';
        echo 
        $str;
        $str = eval ("?>".$str);
        echo 
        $str;
        ?>
        hopka.net!

        Comment


        • #5
          Vielen Dank! Immerhin wird PHP jetzt ausgeführt *smile*. Allerdings noch nicht an der "richtigen Stelle". Folgendes script dazu:

          PHP Code:
          <?php
          include "class.FastTemplate.php3";

          $tpl = new FastTemplate(".");

          $tpl->define(array(
          "template" => "template.tpl"
          ));

          if(!isset(
          $_GET["id"])) $id 0;
          if(!isset(
          $id)) $id $_GET["id"];

          $array1 = array();
          $datei fopen("inhalt/content.ct","r");
          while (!
          feof($datei)) {
              
          $zeile fgets($datei,1000);
              
          array_push($array1,$zeile); }
          fclose($datei);

          if(!
          $array1[$id])
          $id 0; }

          $array explode("|:|",$array1[$id]);
          $titel $array[0];
          $inhalt $array[1];

          $inhalt = eval ("?>".$inhalt);

          $tpl->assign("{title}"$titel);
          $tpl->assign("{inhalt}"$inhalt);

          $tpl->parse("ausgabe""template");
          $tpl->FastPrint("ausgabe");
          ?>
          Allerdings gibt ^SCRIPT^ dann $inhalt nicht an dem Platzhalter {inhalt} aus, sondern vor allen Headern, also so:
          Code:
          <p>Wir wünschen Ihnen viel Spaß mit dem PHP-Content auf dieser Seite</p>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                  "http://www.w3.org/TR/html4/strict.dtd">
          <html>
          <head>
          <title>Test1 </title>
          Moritz

          Comment


          • #6
            is ja klar

            du verwendest echo und eval führt den echo befehl aus, also hast du die ausgabe auf dem bildschirm stehen

            du müsstest statt echo die ausgabe in ner variablen zwischenspeichern und die dann an der gewünschten stelle mittels template engine ausgeben
            Ich denke, also bin ich. - Einige sind trotzdem...

            Comment


            • #7
              Wie sähe das dann in der Praxis aus?

              //edit:

              du müsstest statt echo die ausgabe in ner variablen zwischenspeichern und die dann an der gewünschten stelle mittels template engine ausgeben
              Aber habe ich das nicht getan?
              PHP Code:
              $inhalt = eval ("?>".$inhalt);

              $tpl->assign("{inhalt}"$inhalt);
              $tpl->parse("ausgabe""template");
              $tpl->FastPrint("ausgabe"); 

              //edit:
              Hat anscheinend nichts mit echo, etc. zu tun: Auch ohne PHP im Content-String $inhalt wird $inhalt ganz oben auf die Seite gesetzt.
              Last edited by MoMo; 27-07-2003, 17:12.

              Comment


              • #8
                Ich bedanke mich für diesen smarten Trick Hopka, der kommt mir gerade zupass.
                Nicht die hohe Schule vermutlich, aber umso effizienter

                mfg CHnuschti

                Comment

                Working...
                X