PHP-Code in einem String ausführen

Raven280438

Erfahrenes Mitglied
Hi,

Ich lese mittels fopen den Inhalt einer HTML-Datei ein und geben ihn dann mit echo aus.
Unterwegs passe ich noch die Pfad-Angaben von Bildern an die neue Location an.

Bei normalen HTML-Dateien funktioniert das. Wie bekomme ich es aber hin, dass möglicher PHP-Code der in diesen Dateien zwischen <? und ?> steht ausgeführt wird?

Hier die Funktion so wie ich sie jetzt benutze:
PHP:
$fopen = fopen("$sourcefile", "r");
$txt = fread($fopen, filesize($sourcefile));
fclose($fopen);
//Bilder-Pfad anpassen
$txt = str_replace("src=\"images/","src=\"".dirname($sourcefile)."/images/",$txt);

echo $txt;

Die Dateien mit include() einzulesen funktioniert nicht, weil ich dann nicht den Pfad der Bilder ändern kann.

Kann mir jemand weiterhelfen?


Gruß
 
Statt echo $txt;:
PHP:
eval("?>{$txt}");
Ist aber keine wirklich schöne Lösung, da resourcenfressend und unsicher - Was spricht denn gegen eine statische Anpassung der Links oder gegen eine Art Template?
 
Was dagegen spricht ist, dass ich kaum Zeit dafür habe und es sich um über 150 Dateien handelt ;)

Ich will nicht jede Datei an das neue Layout anpassen müssen. Deshalb habe ich Header, Menü usw. in eine Datei gepackt, und den Inhalt hole ich mir jetzt aus den 150 Dateien. Die Formatierung geht über CSS.
 
Danke, eval funktioniert.

Ich hatte schon
PHP:
eval($txt)
probiert, gibt aber eine Fehlermeldung aus.

Wo genau liegt der Unterschied zwischen
PHP:
eval($txt)
und
PHP:
eval("?>{$txt}");
 
Im Gegensatz zum normalen Interpretieren einer PHP-Datei startet der Parser für den Aufruf von [phpf]eval[/phpf] im offenen Zustand, heißt, dass er vorne ein imaginäres <?php anhängt. Da das natürlich störend ist in deinem Fall, stoppen wir den Parser gleich wieder.

Was dein Problem betrifft: Unschöne Situation, aber wenn nicht irgendwann mal eine Veränderung gemacht wird und die Applikation noch ein wenig genutzt werden soll, wird die Wartung immer schwerer; Die Lösungen immer ineffizienter.
Des Weiteren ist es oftmals einfach nur eine Sache der Oranisation der Dateien und der Strukturen, die einem viel Arbeit abnehmen könnte - Das bedarf immer ein wenig Mehraufwand zu Beginn, zahlt sich aber spätestens bei der ersten größeren Wartungsarbeit aus.
 
Zurück