Code ohne Ausgabe in eine Variable parsen

SpAder

Mitglied
also es gfehtsich um folgendes:
Ein String der PHP-code enthält, dort kann jegliche art von validem php-code drin sein, soll ohne iene Ausgabe zu erzeugen in eine Variable mit der ich weiterarbeiten kann geparst werden.
Leider erzeugt eval() immer autoamtisch eine Ausgabe.
Habs auch schon imit der Ausgabesteuerung probiert, aber entweder bin ich zu blöd dazu oder das geht mit eval zusammen irgendwie nicht.
Ich hoffe da gibts überhaupt ne möglcihkeit für.
 
Mit eval wird der Code ausgeführt, den du als Parameter übergibst. Wenn du nicht willst, dass in diesem Code nichts ausgegeben wird, dann solltest du dort keine Funktionen verwenden, die Text ausgeben.
 
Ich bin mir nicht mehr sicher ([phpf]eval[/phpf] ist - neben regulären Ausdrücken - eine der mit Abstand benutzerunfreundlichsten Funktionen in PHP), aber ich glaube, dass es bei mir mit dem Konstrukt eval('<?php' . $string) (hi Gumbo! :-)) funktioniert hat. Bin mir aber ehrlich nicht mehr sicher.
 
ok ich muss das glaubich ein wenig anders formulieren.

also cih hab ein stück code, das eine Ausgabe erzeugt.
Dieses Stück code sol nun geparst werden, und die Ausgabe soll nun aber nicht Ausgegeben werden, sondern in einer Variablen landen.
 
Hi,

Du müsstest Die Ausgabe des zu parsenden Codes in ein return umleiten. Eine andere Möglichkeit ist mir dafür nicht bekannt (wenn das auch anders geht, würde es mich allerdings auch interessieren).
phphomepage hat gesagt.:
Eine return-Angabe beendet sofort die Auswertung des Strings. Mit PHP4 können sie ein return verwenden, um das Ergebnis der Funktion eval() zu erhalten. In PHP3 ist eval() nämlich vom Typ void und liefert nichts zurück.

Gruß
.
 
Oliver Gringel hat gesagt.:
Dann schreib den Code um, dass eben nichts ausgegeben wird, soldern die Ausgabe in einer Variable landet.
wenn das möglich wäre, hätte ich den thread nicht aufgemacht; Es ist nämlich zwingend erforderlich, dass das zu parsende Script auch Ausgaben beinhalten darf.




@Datic
hab grade versucht die return Anweisung an den zu parsenden String hintern anzuhängen
eval($string.'\$ausgabe = return();');
das führt allerdings nur zu folgendem Fehler:
Parse error: syntax error, unexpected T_RETURN in eval.php(3) : eval()'d code on line 1

hast du ne Idee, wie man das return(), da unterbringen muss?
 
ok nun geht da was
PHP:
<?
function return_eval($string) {
  return(eval($string));
}
$parse_mich = "echo \"hallo\";";
$blubb = return_eval($parse_mich);
?>

da wo ich das eigentlcih für brauche gibtsgrade noch ein anderes Problem deswegen weiß ich ncoh nicht ob das schon die endgültige Lösung war, ich hoffs mal schwer.
 
Nein, ich meinte das anders: Alle Ausgaben (echo) in dem Codeblock statt dessen zusammenfassen und mit "return" zurückgeben.... wenn Du allerdings keine Änderungen an diesem Code machen kannst, bringt Dir das auch nichts (entspricht im wesentlichen der Variante mit der Variable).

Gruß
.
 
Zurück