Andere Schreibweisen von Wort finden / vergleichen


#1

Hallo zusammen! :slight_smile:
Ich möchte wie schon im Titel beschrieben eine andere Schreibweise von einem Wort finden und vergleichen.

Gegeben ist ein Suchwort und ein Array mit verschiedenen einzelnen Worten.
Das gesuchte Wort kann im Array so vorkommen wie es ist, kann aber auch eine teilweise andere Schreibweise haben.

Zum Beispiel könnte das Wort Straße ja auch Strasse geschrieben werden.
Genau das gleiche Spiel mit Umlauten wie äöü. äöü könnte aeoeue sein. Möglich wären aber auch äoeue,äöue,äöü,aeöü,aeoeü.
Es müssen also nicht zwangsläufig alle umlaute ersetzt sein.
Außerdem können Worte - oder _ enthalten, ein - kann im anderen Wort aber auch ein _ oder einfach weggelassen sein und umgekehrt.

Ich denke es müsste einen relativ kurzen, aber performanten Weg geben, aber ich hab das Gefühl, dass ich einfach nicht drauf komme.

Mein Ansatz wäre zuerst via in_array() nach der gleichen Schreibweise zu suchen und wenn es nicht gefunden wird in ner Schleife immer ein Zeichen zu ersetzen wenn ein zweites gefunden wird, die Funktion rekursiv aufrufen und das nächte Zeichen suchen, bis ich irgendwann alle Möglichkeiten durchprobiert habe.
Wenn das Suchwort im Array gefunden wird, soll es zurück gegeben werden. Wenn mehrere Treffer vorhanden sind, sollen alle in einem Array zurück gegeben werden.

Wenn ein Wort viele Umlaute hat, kann das aber mitunter viele rekursive Aufrufe geben, was mir nicht sonderlich performant erscheint.

Fällt jemandem ein besserer Weg ein?
Kann von mir aus auch gerne mit regulären Ausdrücken sein.
In denen bin ich leider bisher nicht so fit.

Ich erwarte keine vollständige fertige Lösung, sondern eher so Denkanstöße.
Ist halt so etwas zum Knobeln, was aber im Ergebnis durchaus nützlich sein kann.

Schönen Abend euch.


#2

Nur eine Anmerkung am Rande, weil es als Beispiel genannt wurde: Straße kann nicht mit ss geschrieben werden. Auch wenn es viele tun, ist es schlichtweg falsch.


#3

Als Inspiration: “Levenshtein-Distanz” und PHP-Funktion “similar_text”.


#4

Doch? z.B. in der Schweiz. Im hiesigen Hochdeutsch kommt ein 'ß" schlicht nicht vor und wird auch nicht unterrichtet. :slightly_smiling_face:


#5

An die hab ich gar nicht gedacht, bzw. kannte ich nicht (bisher nie benutzt). Die schaue ich mir mal an. Danke für den Tipp.

UPDATE:
Das hier ist so ziemlich das, was ich gesucht habe.
http://php.net/manual/de/function.similar-text.php#29221

Danke für den Anstoß, kann geschlossen werden.