ctl: eval()

Hallo!

Ich habe einene php code der zuerst eine xslt - Transformation
durchführt und den dadurch erstellten html code in die Variable
$html schreibt.

Da ich jetzt aber in der XML Datei die mit XSL Transformiert wird
wiederum PHP-Code einsetzen muss hab ich eben diesen Code dann auch
in der Variable $html stehen. Gibt man die mit
print $html
aus - wird klarerweise der PHP Code nichtmehr vom Interpreter abgearbeitet sondern befindet sich im Quelltext des ausgegebenen HTML.

Da hab ich die PHP-Funktion eval() gefunden die dazu dienen soll PHP-Code
der in einer Variablen gespeichert ist abzuarbeiten.

In meinem Fall ist aber in der Variablen $html nicht nur reiner PHP-Code enthalten sondern HTML-PHP-HTML und ich bekomme eine Fehlermeldung:

Parse Error in eval()'d code

Was muss ich tun, dass ich die Variable $html ordnungsgemäß vom Interpreter abgearbeitet bekomme??

Grüße

  1. Hi,

    In meinem Fall ist aber in der Variablen $html nicht nur reiner PHP-Code enthalten sondern HTML-PHP-HTML und ich bekomme eine Fehlermeldung:

    Parse Error in eval()'d code

    Was muss ich tun, dass ich die Variable $html ordnungsgemäß vom Interpreter abgearbeitet bekomme??

    Sie mit syntaktisch korrektem PHP-Code befuellen;
    und dabei was das Mischen von PHP- und HTML angeht die Besonderheit beachten, dass eval annimmt, es befaende sich bereits im "PHP-Modus" des Parsers, also darf der Code nicht direkt mit HTML-Tags beginnen. (Sollte er es doch tun, muss man davor erst den PHP-Block schliessen.)

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Sie mit syntaktisch korrektem PHP-Code befuellen;
      und dabei was das Mischen von PHP- und HTML angeht die Besonderheit beachten, dass eval annimmt, es befaende sich bereits im "PHP-Modus" des Parsers, also darf der Code nicht direkt mit HTML-Tags beginnen. (Sollte er es doch tun, muss man davor erst den PHP-Block schliessen.)

      MfG ChrisB

      Ja, sie fängt wie gesagt mit HTML an in der Mitte kommt PHP und zum Schluss wieder HTML. Wie kann ich den PHP-Block am Anfang der Datei schließen? Falls ich einfach ein ?> reinmache regt sich der XSLT Processor auf der die Datei vor dem PHP Interpreter zu sehen bekommt, da der Wiederum am Anfang HTML bzw XML Code erwartet und kein ?>

      Grüße

      1. Hi,

        bitte zitiere vernuenftig.

        Wie kann ich den PHP-Block am Anfang der Datei schließen? Falls ich einfach ein ?> reinmache

        Genau so.

        regt sich der XSLT Processor auf der die Datei vor dem PHP Interpreter zu sehen bekommt,

        Dann fuege es erst hinzu, nachdem der XSLT-Prozessor es zu sehen bekommen hat.

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Dann fuege es erst hinzu, nachdem der XSLT-Prozessor es zu sehen bekommen hat.

          Ok, jetzt meldet PHP den Fehler nichtmehr am Anfang der Datei, sondern am
          Ende, also in der letzten Zeile?! (Datei hört mit HTML auf)

          Grüße

          1. Hi,

            Ok, jetzt meldet PHP den Fehler nichtmehr am Anfang der Datei, sondern am
            Ende, also in der letzten Zeile?! (Datei hört mit HTML auf)

            Dann ziehst du jetzt mal den Umkehrschluss aus meiner Erklaerung, was eval am Anfang des zu parsenden Code-Strings erwartet.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
            1. Dann ziehst du jetzt mal den Umkehrschluss aus meiner Erklaerung, was eval am Anfang des zu parsenden Code-Strings erwartet.

              Du meinst Wohl am Ende - und da tippe ich schwer auf ein <?
              Behebt aller dings den Fehler nicht.
              Die entsprechenden Code-Zeilen lauten:

                
              $php = '?>'.$html.'<?';  
              $php = eval ($php);  
              echo $php;  
              
              
              1. Hi,

                Behebt aller dings den Fehler nicht.

                Und was schliessen wir daraus wiederum? Dann wird er wohl noch woanders liegen.

                Aber im allgmeinen ist eval ja ebenso gespraechig, wie PHP bei einem normalen Parse-Vorgang - also, was sagt die Meldung denn genau?

                MfG ChrisB

                --
                „This is the author's opinion, not necessarily that of Starbucks.“
                1. Was sagt die Meldung denn genau?

                  Parse error: parse error in page.php5(123) : eval()'d code on line 134

                  Wobei line 134 die letzte Zeile der Datei ist.

                  1. Hi,

                    Parse error: parse error in page.php5(123) : eval()'d code on line 134

                    Wobei line 134 die letzte Zeile der Datei ist.

                    Auch noch, nachdem sie durch den XSLT-Prozessor geschickt wurde?

                    Na ja dann, Copy&Paste in eine "normale" PHP-Datei, und da debuggen.

                    MfG ChrisB

                    --
                    „This is the author's opinion, not necessarily that of Starbucks.“