AllesMeins: Wörtchen wechsel dich

Beitrag lesen

Hi,

ich bräuchte mal etwas Inspiration wie ich ein Problem auf möglichst elegante Weise lösen kann. Ich stehe hier gerade echt auf dem Schlauch, wie ich das effektiv angehen kann. Also folgendes:

Ich habe eine Liste mit Wortpaaren (so in der Größenordnung 100 Einträge, also nichts unhandhabbares). Ich möchte nun einen Eingabe-String bearbeiten indem ich ein Wort jeweils durch seinen Partner ersetze. Und das in beide Richtungen. Also wenn in der Liste das Wort-Paar: Hund - Katze steht, so soll jedes Vorkommen von Hund durch "Katze" ersetzt werden, aber auch jede "Katze" durch "Hund".
Und das für alle Wörter der Liste.
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. Arbeite ich auf Kopien der Strings müsste ich sie danach wieder irgendwie clever mergen und dabei wissen was erhalten bleiben muss und was nicht. Das löst das Problem also auch nicht.
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.

Kann mir hier irgendwer auf die Sprünge helfen, wie ich das elegant und effektiv lösen kann?