PHP-Code aus einem String ausführen - Teil 1

  • Aus den verschiedensten Gründen möchte man manchmal PHP-Code ausführen, der in einer String-Variable steht. Der Code kann dabei natürlich aus einer Datenbank oder einer Datei geladen werden, in dieser Hinsicht ist wie immer alles denkbar. Die Möglichkeit PHP-Code aus einem String auszuführen, bietet uns die Funktion eval(). Doch einige Stolperfallen gibt es bei der Verwendung der Funktion zu beachten. Folgender Codeschnipsel zeigt die einfachste Anwendung. Die Variable <#$>code enthält eine PHP-Anweisung, die im nächsten Schritt mit der Funktion eval() ausgeführt wird. Der Codeschnipsel verdeutlicht nur die Funktionsweise, ergibt ansonsten natürlich keinen praktischen Sinn. <?php<#$>code = 'echo("PC-Special");';eval(<#$>code);?> Sie sehen also, dass alle Regeln von PHP auch im String <#$>code gelten, wie etwa das Semikolon hinter jeder Anweisung. Damit wir aber wirklich alles in diesen String packen können, verschärfe ich die Regeln noch etwas. <?php<#$>code = '<b>Die <?php echo("PC-Special"); ?> ist toll.';eval(' ?>' . <#$>code . '<?php ');?> Wie in einem richtigen Skript ist es uns nun möglich, PHP- mit HTML-Code in unserem String <#$>code zu vermischen. Nötig wird dazu aber auch die Kennzeichnung von PHP-Code mit <?php und ?> im String. Zusätzlich müssen wir auch den Aufruf der Funktion eval() anpassen und das aktuelle Skript mit ?> schließen. Erst dann wird der Code aus dem String ausgeführt. Schließlich öffnen wir unser laufendes Skript wieder mit <?php.