Hi,
so sieht zb die Suchrückgabe nach einem Begriff wie SRM aus.
Code:
//html rendered
.
.
ftsprozesse in Ihrem PIM oder Ihrer Procurementumgebung..
.
.
.
.
.
.
.
Der Punkt kommt daher, das ich diese in den String konkateniert habe, falls die Funktion zum Auslesen des Satzes 0 zurückgibt und also nicht übereinstimmt.
So sieht dabei der Scanfiles() Teil aus
PHP:
function scanFiles($path,$key,$type)
{
$handle=opendir($path);
$i=0;
while($file=readdir($handle))
{
if($file!='.' && $file!='..' && preg_match('/.'.$type.'/i',$file))
{
if(preg_match('/'.$key.'/i',strip(readContent($path,$file))))
{
$pattern='/(?:\w|\s)+'.$key.'(?:\w|\s)*\./i';
$string=strip(readContent($path,$file));
preg_match($pattern, $string, $match);
$result[$i]='<a href="'.$file.'" target="_self">'.$match[0].'.</a>';
$i++;
}
}
}
closedir($handle);
return $result;
}
Die Rückgabe des Gesamtergebnisses, welches ein Array ist, ergibt, falls er nicht mit foreach() ausgelesen wird
War es das was du wissen wolltest?
Nun… ich habe mir nocheinmal Gedanken gemacht.
Das Problem liegt ausformuliert darin, das wenn ein Suchwort in einem Massentext vorkommt, dieses noch längst nicht in einem syntaktischen Satzgefüge, von einem Punkt abgetrennt, vorkommen muss.
Jedoch ist das erste Kriterium, also das das Suchwort überhaupt vorkommt, das ausschlaggebende bei der Suche. Das Kriterium „Wort innerhalb des Satzes“ dient ja nicht im eigentlichen Sinne als Auswahlkriterium einer semantisch-orientierten Suche, sondern eher dem Zweck der Extraktion eines Fragments zur besseren Weiterverarbeitung im Layout.
Daher würde ich auch folgendes sehr begrüßen, falls es klappt…
Es soll, vom ersten Vorkommen des Suchwortes innerhalb des Textes 4 Wörter davor und 4 Wörter danach ausgegeben werden.
Kriterium für ein neues Wort ist ein Leerzeichen.
Falls 4 Wörter davor oder danach am Ende bzw. am Anfang nicht möglich sind, einfach den Anfang oder das reguläre Ende nehmen.
Falls 4 Wörter möglich sind mit ... davor und danach abkürzen… es sei denn, es befindet sich direkt davor oder danach ein Punkt…
Ich dachte erst an Substr()… aber das würde unschön Wörter abschneiden… ich denke auch regex ist hier gefragt… nur bin ich da auf eure Hilfe angewiesen.
Like this…
PHP:
$string='Das ist ein Satz. Das ist der Satz mit dem Suchwort LALA. Das ist noch ein Satz';
echo gesuchteFunktion($string);
//Satz mit dem Suchwort LALA. Das ist noch ein Satz.
//Bzw
$string='Das ist ein Satz. Das ist der Satz blubb bla bla mit dem Suchwort LALA. Das ist so.';
echo gesuchteFunktion($string);
//....bla mit dem Suchwort LALA. Das ist so.
Nebenbei gefragt… was passiert, wenn in einem Satz dann 3 mal das Suchwort aufeinander trifft? Oder greift da das Beenden von preg_match() nach dem ersten Treffer im Gegensatz zu preg_match_all() ?
Liebe Grüße
Yves