Hi,
ich suche eine Möglichkeit, einen String aus mehreren Wörtern (Suchbegriff) in einer Textdatei zu finden.
Für ein einzelnes Wort ist das mit der Levenshteinfunktion kein Problem. Ich erzeug einfach ein Array mit allen Wörtern und ermittle per foreach() für jedes Wort und die Sucheingabe den Levenshteinwert.
Nur wie kann ich das bei mehreren Worten realisieren?
Im Grunde würde ich da so vorgehen, dass ich zwei Arrays erstelle. Eins mit den Suchbegriffen $arr_suche und eins mit den Wörtern aus der Textdatei $arr_datei.
Dann ermittle ich den Levenshteinwert von ($arr_suche[0], $arr_datei[0]). Ist der Wert kleiner als ein von mir gesetztes Maximum, ermittle ich den Levenshteinwert von ($arr_suche[1], $arr_datei[1]), ... bis alle Suchbegriffe durch sind.
War die Schleife mit allen Suchbegriffen erfolgreich, beginne ich den nächsten Durchgang bei $arr_datei[anzahl_der_Suchbegriffe+1]
War der Levenshteinwert aber größer als mein Maximum, breche ich ab und beginne das ganze Spiel, indem ich den Levenshteinwert von ($arr_suche[0], $arr_datei[1]) ermittle.
Funktionieren würde das, aber der Aufwand mit den Arrays ist sehr groß.
Alternativ könnte ich natürlich irgendwie in einem Rutsch soviel Worte aus meinem $arr_datei mit $arr_suche vergleichen, wie der Suchbegriff beinhaltet. Würde aber auch darauf hinauslaufen, dass ich wieder bei jedem Wort meinen Levenshteinwert abfrage.
Wie könnte man da vorgehen? Außer Arrays fällt mir nichts ein, da ich ja bspw. mit strpos keine ähnlichen Wörter finden kann.
ich suche eine Möglichkeit, einen String aus mehreren Wörtern (Suchbegriff) in einer Textdatei zu finden.
Für ein einzelnes Wort ist das mit der Levenshteinfunktion kein Problem. Ich erzeug einfach ein Array mit allen Wörtern und ermittle per foreach() für jedes Wort und die Sucheingabe den Levenshteinwert.
Nur wie kann ich das bei mehreren Worten realisieren?
Im Grunde würde ich da so vorgehen, dass ich zwei Arrays erstelle. Eins mit den Suchbegriffen $arr_suche und eins mit den Wörtern aus der Textdatei $arr_datei.
Dann ermittle ich den Levenshteinwert von ($arr_suche[0], $arr_datei[0]). Ist der Wert kleiner als ein von mir gesetztes Maximum, ermittle ich den Levenshteinwert von ($arr_suche[1], $arr_datei[1]), ... bis alle Suchbegriffe durch sind.
War die Schleife mit allen Suchbegriffen erfolgreich, beginne ich den nächsten Durchgang bei $arr_datei[anzahl_der_Suchbegriffe+1]
War der Levenshteinwert aber größer als mein Maximum, breche ich ab und beginne das ganze Spiel, indem ich den Levenshteinwert von ($arr_suche[0], $arr_datei[1]) ermittle.
Funktionieren würde das, aber der Aufwand mit den Arrays ist sehr groß.
Alternativ könnte ich natürlich irgendwie in einem Rutsch soviel Worte aus meinem $arr_datei mit $arr_suche vergleichen, wie der Suchbegriff beinhaltet. Würde aber auch darauf hinauslaufen, dass ich wieder bei jedem Wort meinen Levenshteinwert abfrage.
Wie könnte man da vorgehen? Außer Arrays fällt mir nichts ein, da ich ja bspw. mit strpos keine ähnlichen Wörter finden kann.