ChrisB: Wörtchen wechsel dich

Beitrag lesen

Hi,

Mein Problem ist nun dass ich irgendwie sicherstellen muss dass ein einmal ersetztes Wort nicht wieder zurück geändert wird. Also wenn ich einfach die Liste durcharbeiten würde und erst ein $string = str_replace("Katze","Hund",$string) mache und dann ein str_replace("Hund","Katze",$string) ersetze ich damit ja auch die eben erst "erzeugten" Hunde.

Dann ersetze "Hund" nicht durch "Katze", sondern durch "*Katze*" (bzw. benutze ein anderes Sonderzeichen, welches im Text garantiert nicht vorkommt).
Und ersetze nur dann, wenn das Wort nicht bereits durch dieses Sonderzeichen eingeklammert ist - per regulärem Ausdruck mit lookahead/lookbehind-assertions.

Hinzu kommt noch, dass enzelne Wörter Teilwörter von anderen sein können. Also beispielsweise könnte ein Wortpaar Tür - Türklinke sein. Dabei muss sichergestellt sein, dass aus der Eingabe "Türklinke" nicht "Türklinkeklinke" wird - die Ersetzung sollte also immer erst möglichst große Treffer finden.

Dann sortiere die Suchworte der Länge nach absteigend, bevor du mit dem ganzen Zirkus beginnst.

MfG ChrisB

--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]