Template einlesen mit fopen -> HTML-Probleme!
Sebastian Freytag
- php
0 der bär0 Aqua0 Sven Rautenberg
Hallo Forumianer!
Hab da ein kleines "Rest"-Problem mit dem Einlesen von einem Template (pures html) in ein php-Script.
<-- Script -->
$import = fopen("$rootpath/$tplpath/artikel_bilder.tpl", "r");
$ersatz = fread($import,9999999);
fclose($import);
Mittels str_replace() tausche ich dann z.B. [PLATZHALTER] in dem Template durch $platzhalter aus. Das funktioniert auch wunderbar.
Das Problem bei der Einlese des Template ist jetzt, dass bei jeder Zeile des Templates jetzt ein <br> vorangesetzt wird. Ist natürlich ein untragbarer Zustand. Gibt es hier ein kleinen Zusatzbefehl mit dem man dem php-Script sagt "behandle das ganze wie einen langen String"?!
grüsse
Sebastian
Hi
also ich versteh das net so ganz mit dem <br>.
Müsstest du genauer erklären.
gruß der bär
Servus Sebastian
Wenn Du Templates verwenden willst,
verwende mit PHP bitte "smarty"
Das ist eines der BEsten Template Systeme unter php
LG,
Aqua
Moin!
Hab da ein kleines "Rest"-Problem mit dem Einlesen von einem Template (pures html) in ein php-Script.
<-- Script -->
$import = fopen("$rootpath/$tplpath/artikel_bilder.tpl", "r");
$ersatz = fread($import,9999999);
fclose($import);
Das ist nicht so wahnsinnig schön programmiert. Du hast zwei bessere Alternativen und eine Verbesserung deiner Variante:
1. Es gibt ab PHP 4.3 den Befehl file_get_contents($dateiname), der den Inhalt der Datei als String zurückliefert. Dieser Befehl macht genau das, was du in deinen drei Zeilen versuchst zu fabrizieren.
2. Außerdem gibts den Befehl file($dateiname), welcher den Inhalt der Datei als Array zurückliefert, pro Zeile ein Arrayelement. Das kann man hinterher in einen String zusammenbasteln. Empfehlenswert, wenn du eine PHP-Version vor 4.3 benutzen mußt oder zu ihr kompatibel bleiben willst.
3. Deine Version ist vom Grundsatz her deshalb schlecht, weil du einfach mal 10 Megabyte Eingabepuffer reservierst, den die Datei grundsätzlich einnehmen könnte. Du kannst aber leicht herausfinden, wie groß die Datei wirklich ist, indem du die Funktion filesize($dateiname) anwendest und als zu lesende Bytezahl übergibst. Macht die ganze Funktion mit Sicherheit schneller.
Das Problem bei der Einlese des Template ist jetzt, dass bei jeder Zeile des Templates jetzt ein <br> vorangesetzt wird. Ist natürlich ein untragbarer Zustand. Gibt es hier ein kleinen Zusatzbefehl mit dem man dem php-Script sagt "behandle das ganze wie einen langen String"?!
Das <br> kommt garantiert nicht aus deiner Einlesefunktion. Das muß woanders herkommen. Vielleicht passiert es beim Speichern schon. Schau nach, was im Quelltext tatsächlich im Template steht. Wenn die <br> da schon drin sind, macht dein Skript alles richtig - zumindest beim Einlesen.
Oder du hast beim Umwandeln einen Denkfehler gemacht und haust <br> rein.
- Sven Rautenberg