(PHP 4, PHP 5)
eval — Wertet eine Zeichenkette als PHP-Code aus
Wertet die in code_str enthaltene Zeichenkette als PHP-Code aus. Abgesehen von anderen Zwecken kann dies nützlich sein, um Code für eine spätere Ausführung im Textfeld einer Datenbank zu speichern.
Beim Gebrauch von eval() gilt es einige Faktoren zu beachten. Die übergebene Zeichenkette muss gültigen PHP-Code enthalten, einschließlich solcher Dinge wie Anweisungen mit einem Semikolon abzuschließen, damit der Parser nicht in der Zeile nach dem eval() abbricht, und des richtigen Setzens des Escape-Zeichens in code_str . Um HTML-Ausgabe und PHP-Code zu mischen, können Sie zum Verlassen des PHP-Codes das schließende PHP-Tag verwenden.
Beachten Sie, dass die innerhalb von eval() vorgenommenen Variablen-Zuweisungen nach Abarbeitung auch im Hauptskript ihre Gültigkeit behalten.
Die Code-Zeichenkette, die ausgewertet werden soll. code_str muss keine öffnenden PHP-Tags enthalten.
Eine return-Anweisung beendet die Auswertung der Zeichenkette sofort.
eval() gibt NULL zurück, außer wenn im ausgewerteten Code return aufgerufen wird, dann aber wird der an return übergebene Wert zurückgegeben. Falls im ausgewerteten Code ein Parse Error auftritt, gibt eval() FALSE zurück und der weitere Code wird normal ausgeführt. Es ist in eval() nicht möglich, einen Parse Error mittels set_error_handler() abzufangen.
Beispiel #1 eval() Beispiel (einfache Texteinfügung)
<?php
$string = 'Bierglas';
$name = 'Binding-Lager';
$str = 'Das ist mein $string, voll mit $name.';
echo $str . "\n";
eval ("\$str = \"$str\";");
echo $str . "\n";
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Das ist mein $string, voll mit $name. Das ist mein Bierglas, voll mit Binding-Lager.
Hinweis: Da dies ein Sprachkonstrukt und keine Funktion ist, können Sie dieses nicht mit Variablenfunktionen verwenden.
Bei allem, dessen Ergebnisausgabe direkt im Browser angezeigt wird, können Sie die Funktionen zur Ausgabesteuerung verwenden. Damit lässt sich die Ausgabe dieser Funktion erfassen, und - zum Beispiel - in einem string speichern.
Hinweis: Im Fall eines schweren Fehlers im augewerteten Code wird das komplette Skript beendet.