maettig.com

Thiemos Archiv

Jetzt stolperte ich schon zum zweiten Mal über irrsinnig komplizierte eval()-Konstrukte, die den übergebenen String mit Regulären Ausdrücken und Schleifen in PHP- und HTML-Fragmente zerlegen und beides getrennt handhaben. Dabei ist das absolut unnötig. eval() kann alles, was PHP auch kann, und das schließt insbesondere die Vermengung mit HTML ein. Nicht einmal im Handbuch wird das korrekt beschrieben.

eval("echo 42;");

Diese Art, eval() zu verwenden, ist wohl dokumentiert. Beim Versuch, HTML (oder gemischten Code) zu verwenden, wirft PHP allerdings mit Fehlern um sich.

$html = "<h1>HTML</h1>";
eval($html);

Dabei ist die Erklärung recht einfach. eval() startet und endet anders als normale PHP-Dateien nicht im HTML-Modus sondern im PHP-Modus. Deswegen ist im Beispiel ganz oben weder ein einführendes <?php noch das abschließende ?> notwendig. Mit dieser Erkenntniss und etwas Ausprobieren findet man die Lösung.

eval("?>" . $html);

Das ist alles.
Eigentlich simpel - wenn mans weiß ;) Gehört unbedingt in ne FAQ rein..
T$
Steht drin (aber noch nicht lange, ich habe das eben erst gefunden).
Thiemo

Kommentare zu diesem Beitrag können per E-Mail an den Autor gesandt werden.

[ ← Zurück zur Übersicht ]

Impressum & Datenschutz