dedlfix: Platzhalter in einem Text als Schlüsselwort erkennen und ersetzt

Beitrag lesen

Hi!

$temp = preg_replace("/%" . $search . "%/", $replace, $temp);
Es funktioniert soweit auch ganz gut, nur denke ich das ich es bestimmt etwas umständlich gemacht habe und es mit Sicherheit eleganter bzw. einfacher gelöst werden könnte?

Du brauchst keine regulären Ausdrücke für solch simple Ersetzungen, str_replace() tut's auch. Damit oder besser mit strtr() in der zweiten Variante kannst du es unter Umständen auch noch eine weiter vereinfachen. Die Begrenzungszeichen müssten dann aber mit in den Suchtext geschrieben werden und nicht erst beim Ersetzen hinzugefügt werden. Aber auch preg_replace() kann Arrays als Parameter übernehmen, so dass das Interieren zu Fuß entfallen kann.

Und weil du schon "mit Sicherheit" erwähnst, "unter Umständen" schrieb ich deshalb, weil diese Form nur ohne Beachtung eines eventuellen Kontextwechsels verwendet werden kann. Wenn dieser in deinem Fall relevant ist, solltest du doch zu Fuß iterieren und str_replace() mit einzelnen Strings verwenden.

Der Kontextwechsel wäre auch in deinem Code zu beachten gewesen, nämlich für $search, das du ohne Inhaltsbetrachtung in den regulären Ausdruck einfügst. Darin könnten für das Suchmuster relevante Zeichen enthalten sein, wenn du das nicht anderweitig konsequent ausschließen kann.

Lo!