phpbar.de logo

Mailinglisten-Archive

[php] AW: [php] AW: [php] tags durch variablen ersetzen

[php] AW: [php] AW: [php] tags durch variablen ersetzen

Gerald Grote g.grote_(at)_tu-bs.de
Wed, 1 Nov 2000 16:38:41 +0100


Hi,

> Vielen Dank erstmal für die ganzen Antworten.
> Ich habe mich wohl ein wenig blöd ausgedrückt. Im Moment habe ich eine
> Datei, in der für jeden Platzhalter ein str_replace angelegt ist.
> In dieser
> Datei gibt es inzwischen über 200 dieser Befehle z.B.:
>
> $templine = str_replace("%total_online%", $total_online, $templine);
>
> Deshalb dauert es beim durchlaufen der Schleife, in der die Platzhalter
> ersetzt werden viel zu lange. Ich suche nun nach einer Funktion, die den
> Platzhalter erkennt und ihn durch den Inhalt der gleichnamigen Variablen
> ersetzt. Also nur noch einen str_replace oder ereg_replace
> Befehl, nicht wie
> im Moment für jeden Platzhalter. Nur leider weiß ich nicht, wie ich dies
> realisieren kann.

Deine Schleife ist wohl deshalb so aufwendig, weil dein String andauernd
koppiert
wird. Soviel ich weiss, wird beim Aufruf von str_replace wird eine Kopie von
$templine
übergeben, in dieser Kopie wird ersetzt und das Ergebnis dann wieder
$templine genannt.
(wenn das bei php doch anders ist, korrigiere mich bitte jemand)
Je nach länge von $templine dauert das natürlich etwas und verbrät
ordentlich Speicher...

Alternativ könntest du dein String mit etwas "Handarbeit" linear
durchparsen. Du suchst das erste "%" (mit strpos) und gibst den Teil
unverändert aus (mit substr), dann weiter zum nächsten % und die
entsprechende Variable ausgeben und so weiter... das sieht zwar im Code
nicht toll aus, weil du mit Offsets und Längen rumwirbeln musst, ist aber
bedeutend schneller, da PHP keine Kopien anlegen muss und die abgearbeiteten
Teile schonmal auf die Reise zum Client gehen können.

Wenn du Zeit hast, die in die xml-Parser-Funktionen einzuarbeiten, kannst du
für deine Templates auch xml nutzen und die "Handarbeit" von einem
xml-parser erledigen lassen. Das ist recht flexibel und flott (aber für
deine Zwecke vieleicht schon wieder zu viel des Guten).

Gerald.



php::bar PHP Wiki   -   Listenarchive