(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.
code_str
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.