eval()
ctl
- php
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
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
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
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
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
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
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;
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
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.
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