Einzelnen Beitrag anzeigen
  #2  
Alt 16.11.2007, 19:24:52
cesca cesca ist offline
Anfänger
 
Registriert seit: Sep 2006
Beiträge: 26
AW: kleines Verständnisproblem mit regulären Ausdrücken

Hallo,
ich sehe hier nicht das mit dem regex nach ganzen Wörtern gesucht wird.
Code:
[a-zA-Z0-9]+\s
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
Mit Zitat antworten