dedlfix: Text zwischen ##TEXT## durch Variable ersetzen

Beitrag lesen

echo $begrüßung;

Dynamisch - statisch - wie du das Array füllst/anlegst, das du strtr() übergibst ist doch egal.

du meinst also?
ich renne die Datanbankabfrage durch und erstelle daraus dann einmal ##yyy## und $array['yyy'] ?

Wenn in der ersten Spalte der Datenbankabfrage yyy bzw. ##yyy## steht und in der zweiten Spalte der Ersatzstring, dann kann das Array so aufgebaut werden:
$replace = array();
while ($row = fetch_row(...))
  $replace['##' . $row[0] . '##'] = $row[1]; // bzw. $replace[$row[0]] = $row[1];

die Datenbank hat ca. 5000 Einträge, also ca. 5000 Variablen entstehen nachher, mit der Zeit können es auch mehr werden :-)

das ganze wird zur Zeit 400 mal durchlaufen (400 Seiten sollen abgespeichert werden, in den nächsten Wochen wird aus den 400 ca. 1000+++

Sag das doch gleich, bei so einer Menge ist das möglicherweise nicht die ideale Lösung.

wie lange würde das ungefähr dauern?

Garantiert nicht länger als die max_execution_time. :-)

Man kann das nicht so pauschal sagen. Das kommt auf die Rechenleistung und auch auf die Datenbankverbindung an.

Der Hintergrund... es wird eine komplette Website mit mehreren Sprachen auf'n Dateisystem abgespeichert
eine Sprache hat zur Zeit ca. 200 Seiten
das ganze soll statisch werden, da Änderungen nur sehr selten auftreten und wir der Meinung sind, dass reine HTML-Seiten schneller sind

Macht das irgendwann einmal einer, der weiß dass das lange dauern kann? Oder warten Leute auf das Ergebnis, weil sie z.B. die Seiten ändern, ansehen, wieder ändern?

Mein Vorschlag: Probier erstmal die obige Lösung.
Wenn das zu lange dauert, dann prüfe, welcher Teil die Zeit verbraucht, die Datenbankabfrage oder das Ersetzen (Zeitmessung z.B. mit microtime()).
Wenn die Datenbankabfrage zu lange dauert, dann kann man die vielleicht so einschränken:

Die zu bearbeitende Seite wird nach den ##xxx## durchsucht (ja, an der Stelle sind RegExps angebracht). Mit diesen gefundenen Wörtern als Bedingung wird die Datenbank befragt und damit die Ersetzung mit strtr() erledigt. Dann kommt die nächste Seite dran.

Vielleicht dauert das dann aber insgesamt noch länger, weil nun viele kleine Abfragen statt einer großen gemacht werden müssen.

Wie du siehst, sind hier einige Wenns und Vielleichts in meiner Antwort. Da hilft nur Ausprobieren und Erfahrung sammeln und wenn du keine Lösung findest hier wieder nachfragen.

echo "$verabschiedung $name";