Hallo,
ich sehe hier nicht das mit dem regex nach ganzen Wörtern gesucht wird.
Damit suchst du nach einem Zeichen vom Typ Buchstabe(klein u. groß) sowie vom Typ Zahl.
Mit dem "+" erkennt er eines der gerade gesuchten Zeichen einmal oder mehrmals und "s" erkennt Leerzeichen und Tabs und sowas aber keine Zeilenumbrüche.
Das heißt es wird Quasi alles gefunden was in einem normalen Satz steht.
Ich wüsste auch nicht wie mit einem regulären Ausdruck nach irgendwelchen Wörtern davor oder danach gesucht werden kann.
Wenn ich ein Wort suchen würde und davor und danach Text ausgeben will würde ich das vielleicht mit "preg_match" machen.
-die Position des Wortes im Suchtext feststellen
-die Position der gewünschten Zeichen vor und nach dem Suchwort feststellen
-alles ausschneiden
Beispielcode:
PHP-Code:
$davor = 100;
$danach = 100;
$string = "dein Text";
$searchWord = "findMich";
if (preg_match("~$searchWord~i",$string)) { ## ist Suchwort im String
$pos = strpos(strtolower($string),$searchWord); ## Position des Suchwortes im Text
$searchlen = strlen($searchWord); ## Länge des Suchwortes feststellen
if($davor >= $pos) { ## ist Anzeige vor Fund größer oder gleich Fundposition...
$see = substr($string,0,$danach+$davor+$searchlen); ## ...zeige von Anfang des Strings bis Anzeige nach Fund + Suchwortlänge
}else{ ## ist Anzeige vor Fund kleiner als Fundposition...
$see = substr($string,$pos-$davor,$danach+$davor+$searchlen); ## ...zeige von Anzeige vor Fund bis Anzeige nach Fund + Suchwortlänge...
$see = stristr($see," "); ## ...und verwerfe alles vor dem ersten Leerzeichen... (ganzen Wörtern)
$see = "... ".$see; ## ...und setze Punkte davor
}
if(strlen(substr($string,$pos+$searchlen,$danach+$davor)) > $danach) { ## ist Anzeige nach Fund kleiner als Reststringlänge
$see = substr($see,0,strlen($see)-strlen(strrchr($see," "))); ## ...verwerfe alles nach dem letzten Leerzeichen...( ganzen Wörtern).
$see = $see." ..."; ## ...und hänge Punkte hinten dran
}
}
echo $see;