Hi,
ich lese eine Textdatei ein und speichere den gesamten Inhalt Wort für Wort in einem Array. Als Trennungszeichen ist alles erlaubt außer [^a-zA-z;&]
(; und & deswegen, damit Worte mit Umlauten nicht in der Mitte getrennt werden).
(Die Textdatei ist so aufgebaut:
pfadangabeabc.php|titel| | |text blabla
pfadangabexyz.php|titel| | |text blablubb
Benötigt wird nur der "text"-Teil.)
Die Wörter werden dann "gefiltert" und in ein neues Array gespeichert. Lese ich dieses Array aber dann aus, finde ich doch plötzlich Wörter, die vor dem Umlaut abgeschnitten sind. Ich weiß aber nicht, was da der Fehler ist. Wenn ich vor dem "Filtern" das Array ausgeben lassen scheint alles in Ordnung, aber danach nicht mehr.
Das Script sieht so aus:
<?php
$datei = "data.txt"; # Datei öffnen und einlesen
$zeilen = file($datei);
$anz_zeilen = sizeof($zeilen);
for ($i=0; $i<$anz_zeilen; $i++)
{
list ($egala, $egalb, $egalc, $egald, $content) = split("\\|", chop($zeilen[$i]));
$inhalt = $content;
$liste = spliti('[^a-z;&]', $inhalt);
foreach ($liste as $word)
{
$prozent = (1-levenshtein(strtolower($input), strtolower($word))/max(strlen($input), strlen($word)));
if((levenshtein(strtolower($input),strtolower($word)) <= $focus) && $prozent >= 0.5)
{
if(!array_key_exists($word,$words))
{
$words[$word] = $prozent;
}
}
}
}
foreach($liste as $wort) #Array vor Filter, i.O.
{
echo "$wort<br>";
}
foreach($words as $word => $prozent) #Array nach Filter, nicht i.O.
{
echo "$word<br>";
}
?>
Kann mir da jemand helfen?