Danke für eure Hinweise.
An sprintf()
hatte ich vorher auch gedacht, jedoch dürfte für einen zukünftiger Autor diese Schreibweise der Platzhalter unverständlich sein und er kennt ja auch nicht die Positionen der Ersetzungsvariablen. Es sollte daher schon beim erstellen des Textes erkennbar sein, wo eine spätere Ersetzung erfolgt und auch was sie enthalten wird. Daher ziehe ich %NAME% gegenüber %1$s eindeutig vor!
Was sind jeweils die Vor- und Nachteile von preg_replace()
vs. str_replace()
?
preg_replace() ist im Vergleich zu Stringfunktionen sehr träge und unhandlich. Zudem, wenn du ohnehin eine exakte Kette finden willst und nicht ein Muster, ist ein regulärer Ausdruck einfach unnötig.
str_replace() wäre ebenfalls eine Möglichkeit, hier kannst du als Argumente Arrays angeben - dennoch ist sprintf hier das Mittel der Wahl, schlichtwe weil es die größtmögliche Übersichtlichkeit für dein Vorhaben zur Verfügung stellt.
Ob du nun aber sprintf() oder str_replace() nimmst, ist imho hübsch egal - die dafür gedachte Variante ist aber eindeutig sprintf().
Wie meinst du das genau? könntest du es bitte anhand meines Beispiel kurz erläutern!?
Annahme du willst
%suche1%, %suche12% oder %suche127% bzw. irgend eine weitere Möglichkeit mit einer belieben Zahl oder Zeichenkette (die du jeweils nicht kennst) hinten daran ersetzen, dann bist du mit Stringfunktionen schlecht bedient, es wird unötig kompliziert.
Reguläre Ausdrücke kommen dann ins Spiel, wenn dir zwar das Muster aber nicht die exakte Zeichenkette bekannt ist.
Also z.B. "Ersetze mir alle Zeichenketten die wie eine Hexadezimalzahl aussehen"
Solche Mustererkennung bzw. die PCRE-Engine kostet aber Rechnenzeit - in den meisten Fällen wo es um kurze Texte geht ist es wahrscheinlich egal, aber bei langen Würsten gibt es teilweise beträchtliche Unterschiede die dann auch spürbar werden.