SELFPHP: Version 5.8.1 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche


International PHP Conference


WebTech Conference



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



PHP Summit


Software Architecture Summit


:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 
HTML5 Days


JavaScript Days


:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 16.11.2007, 09:50:35
bweichel bweichel ist offline
Junior Member
 
Registriert seit: Jun 2003
Beiträge: 196
bweichel befindet sich auf einem aufstrebenden Ast
kleines Verständnisproblem mit regulären Ausdrücken

Hi,

ich habe ein Suchwort und möchte nun die Textstelle an der das Wort gefunden wurde teilweisen ausgeben. Der Text soll hierbei ca. 10 Wörter (alternativ 1 Satz) vor dem gesuchten Wort anfangen bzw. 10 Wörter hinter dem gesuchten Wort wieder aufhören. Sodas ich dann eine schöne Textpassage mit dem gesuchten Wort ausgeben kann.

Ich habe nun mal eine regulären Ausdruck gebastelt der mir ganze Wörter zurückgibt. Momentan gibt er mir aber die kompletten Wörter des Contents aus. Es sollen natürlich nur 10 sein, also habe ich versucht mit {10} das ganze zu beschränken. Dann wird jedoch keine Übereinstimmung mehr gefunden.

Es ist also offensichtlich was falsch, aber wäre denn der Ansatz für mein o. g. Problem generell richtig oder habe ich da ein kompletter Denkfehler drin? Das Suchwort ist in meinem Ausdruck noch nicht berücksichtigt.

Code:
([a-zA-Z0-9]+\s)
Mit Zitat antworten
  #2  
Alt 16.11.2007, 18:24:52
cesca cesca ist offline
Anfänger
 
Registriert seit: Sep 2006
Beiträge: 26
cesca befindet sich auf einem aufstrebenden Ast
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
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Anfängerfrage zu regulären Ausdrücken... Chrissitopher PHP Grundlagen 9 07.03.2007 19:10:21
Problem mit regulären Ausdrücken HerbyDerby MySQL 0 05.12.2005 16:38:28
Suchen mit oder ohne regulären Ausdrücken?? Herr-Zinfarkt PHP für Fortgeschrittene und Experten 5 13.04.2004 15:49:42
Mal wieder ein Problem mit Regulären Ausdrücken. Wauzy PHP für Fortgeschrittene und Experten 2 03.10.2003 02:06:41


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:00:08 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.


© 2001-2014 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt