Mailinglisten-Archive |
Yannik Hampe schrieb: > > Jörn Grube wrote: >> Ich hab mal wieder ein Problem und brauch Denkhilfen :) >> Mal vorweg: auf meinem Server läuft PHP 4.4.7 und daran kann ICH nichts >> ändern (Hosteurope ist der Hoster). >> [...] >> Mir gehts eigentlich nur darum, wie ich möglichst schnell und ohne den >> Server zu sehr in die Knie zu zwingen an die Ersetzungen komme, wie ich >> dann ersetze und ausgebe ist mir klar. Hab schon auf diversen Seiten >> nach entsprechenden Klassen geguckt, aber nix gefunden. > > Naja... Ich könnte mir vorstellen, dass dies am schnellsten wäre: > $text ='ich bin ein text in dem was ersetzt werden soll'; > $db =...; //db-Link > while ($row = $db->query('SELECT wort,replace FROM ...')) > { > $worte[] =$row[0]; > $neu[] ="<abbr ..>$row[0]</...>"; > } > str_replace($worte, $neu, $text); > > CPU mäßig sollte das sehr sparsam sein. Der Ramverbauch ist bei 1K > Wörtern dabei noch vertretbar gering. > Du könntest allerdings nochmal was rausholen, wenn du die acronyme nicht > in einer DB, sondern in einer Datei speicherst. Am einfachsten wäre wohl > eine Datei mit einem Wort pro Zeile: > ---- Datei Worte > wort1 > wort2 > ... > ---- Datei Ersatz > <abbr ...>wort1</abbr> > <abbr ...>wort2</abbr> > ... > > Dann kannst du per > str_replace(file('Worte'),file('Ersatz'),$text); > sehr einfach und schnell ersetzen. Solange es nur 1000 Wörter sind, > sollte die Methode vom RAM her keinen Stress machen. Dafür musst du > immer die beiden Dateien synchron halten. Aber ich gehe davon aus, dass > das kein Problem ist, da du die Dateien nicht ständig änderst. Du > solltest ggf. flock() verwenden. Danke, damit sollte ich was anfangen können :) LG aus Berlin Jörn
php::bar PHP Wiki - Listenarchive