Steve: PHP Code und HTML in einer Variable ausführen

Hallo,

ich habe folgendes Problem:

ich habe eine Variable, welche ich aus einer datenbank erhalte.

in dieser ist html code, aber auch php code.

so in etwa:

$variable='<table><tr><td><? echo "inhalt" ?></td></tr></table>';

ich will jetzt die variable ausgeben, so dass der html code dran steht und der php code ausgeführt wird. Also so wie wenns in ner datei stehen würde und ich diese mit include(); ausführen würde.

wenn ich echo $variable; mache, dann führt er mit den code nicht aus, sondern schreibt mir den so hin wie er in der variable steht => shit!

gibts da ne lösungsmöglichkeit?

danke, steve

  1. Hallo,

    gibts da ne lösungsmöglichkeit?

    Schau die das mal an:
    http://de2.php.net/eval/

    MfG
    Andre Becker

    1. Jo, hab ich auch ausprobiert, das problem ist, dass da ja html code dabei ist.

      und es auch vorkommen kann, dass nur html oder nur php code in der variable ist, je nach dem halt. und wenn man eval auf html code macht gibts nen fehler

      Hallo,

      gibts da ne lösungsmöglichkeit?
      Schau die das mal an:
      http://de2.php.net/eval/

      MfG
      Andre Becker

      1. Hello,

        und es auch vorkommen kann, dass nur html oder nur php code in der variable ist, je nach dem halt. und wenn man eval auf html code macht gibts nen fehler

        Das mache ich dauernd. Kommt immer drauf an, wie Du das abspeicherst.

        Wenn Du die einzubindenden Inhalte genauso speicherst, wie Du eine include-Datei speichern würdest, nur dass Du die PHP-Open und -Close-Tags weglassen musst, dann klappt das auch.

        Allerdings sollte man eval() in einer Wrapper-Funktion kapseln, um das aufrufende Script und die aufgerufenen Statements voneinander zu trennen (Namensräume, Scopes). Wenn man in dem zu evaluierenden Strung Funktionen definiert, sollte man diese Definitionen bedingt durchführen, abhängig vom mVorhandensein der Funktion im Script. Man könnte sonst leicht einen Redefinitin-Error (oder hieß der jetz Redeclare-Error?) bekommen.

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Allerdings sollte man eval() in einer Wrapper-Funktion kapseln, um das aufrufende Script und die aufgerufenen Statements voneinander zu trennen (Namensräume, Scopes). Wenn man in dem zu evaluierenden Strung Funktionen definiert, sollte man diese Definitionen bedingt durchführen, abhängig vom mVorhandensein der Funktion im Script. Man könnte sonst leicht einen Redefinitin-Error (oder hieß der jetz Redeclare-Error?) bekommen.

          Jo, ich glaub da liegt das problem, da stehen funktionen drin, also die werden da nicht definiert, aber die sollen auch ausgeführt werden und das klappt nicht, die schreibt der mir immer aus

          1. Hello,

            Allerdings sollte man eval() in einer Wrapper-Funktion kapseln, um das aufrufende Script und die aufgerufenen Statements voneinander zu trennen (Namensräume, Scopes). Wenn man in dem zu evaluierenden String Funktionen definiert, sollte man diese Definitionen bedingt durchführen, abhängig vom mVorhandensein der Funktion im Script. Man könnte sonst leicht einen Redefinitin-Error (oder hieß der jetz Redeclare-Error?) bekommen.

            Jo, ich glaub da liegt das problem, da stehen funktionen drin, also die werden da nicht definiert, aber die sollen auch ausgeführt werden und das klappt nicht, die schreibt der mir immer aus

            Aufrufen kannst Du in dem zu evaluierenden String alle Funktionen, nur nicht ohne weiteres definieren. Wenn der String aus irgend welchen Gründen innerhalb des Scriptes mehrfach evaluiert werden muss, dann gibt es eben diesen Redefine-Error.

            Das einfachst ist doch, Du postetst mal einen dieser Strings hier,  zusammen mit den Fehlermeldungen, die bei Dir auftauchen. Aber bitte nicht so ein Riesenteil, sonder nur was minimalistisches, was deine Sorgen offenlegt.

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Das einfachst ist doch, Du postetst mal einen dieser Strings hier,  zusammen mit den Fehlermeldungen, die bei Dir auftauchen. Aber bitte nicht so ein Riesenteil, sonder nur was minimalistisches, was deine Sorgen offenlegt.

              OK:

              es geht um folgende die Variablen mit der funktion show_img() welche aus einer Datenbank gelesen werden

              $row["text"]='show_img("1.jpg");';

              oder mit Text

              $row["text"]=<p>Text</p>';

              kann aber auch beides drin sein

              eval ("$row[text] = "$row[text]";");

              echo $row["text"];

              fehler sind unterschiedlich, je nach dem welche variable angezeigt werden sonn

              z.B. Parse error: parse error, unexpected T_DNUMBER in /.../trips.php(144) : eval()'d code on line 3

              1. Hello,

                es geht um folgende die Variablen mit der funktion show_img() welche aus einer Datenbank gelesen werden

                $row["text"]='show_img("1.jpg");';

                oder mit Text

                $row["text"]=<p>Text</p>';

                kann aber auch beides drin sein

                eval ("$row[text] = "$row[text]";");

                echo $row["text"];

                fehler sind unterschiedlich, je nach dem welche variable angezeigt werden sonn

                z.B. Parse error: parse error, unexpected T_DNUMBER in /.../trips.php(144) : eval()'d code on line 3

                Ich hatte geschrieben: Speichere den Code so, als würdest Du eine lauffähige PHP-Datei erzeugen wollen. Lass nur die PHP-Open und -Close-Tags weg!

                Alse bitte: ...

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. $row["text"]='show_img("1.jpg");';

                  oder mit Text

                  $row["text"]='<p>Text</p>';

                  kann aber auch beides drin sein

                  Ich hatte geschrieben: Speichere den Code so, als würdest Du eine lauffähige PHP-Datei erzeugen wollen. Lass nur die PHP-Open und -Close-Tags weg!

                  Schon klar hab ich ja: beide $row["text"]= wären lauffähige php-dateien.

                  aber die mit der funktion klappt nur wenn ichs so mach:

                  eval("echo $row[text];");

                  und die mit dem text klappt nur so:

                  eval("$row[text] = "$row[text]";");
                  echo $row["text"];

                  aber dann wird wieder kein php code ausgeführt
                  und es soll ja beides klappen, und dass tuts nicht