Wortsuche und Anzeige des Satzes
Hier will ich mal einen Text nach einem Wort durchsuchen und mir dann den Satz anzeigen lassen, in dem das Wort vorkommt. Man kann unter Variable Wort verschiedene Worte aus alle meine Entchen angeben.

Köpfchen in das Wasser, Schwänzchen in die Höh.
<?php
$text=". Alle meine Entchen schwimmen auf dem See. Köpfchen in das Wasser, Schwänzchen in die Höh. Als sie wieder raus kamen, hatten Sie kein Haus. Setzten sich ins Körbchen und guckten oben raus.";
$wort= "Wasser";
$poswort = strpos($text,$wort);
$satzende = strpos($text,".",$poswort);

$n=$poswort;
do{
$n--;
$satzanfang=strpos($text,".",$n);
}while ($satzanfang==$satzende);

echo substr($text,$satzanfang+1,$satzende-$satzanfang);
?>

Erklärung:
$text erhält den gesamten Text, der wegen der speziellen Suchanfrage mit einem Punkt beginnt. Das könnte man auch anders gestalten, aber dann würde das Script noch etwas komplizierter, da man dann eine zweite Bedingung definieren müßte. Später wird klar was gemeint ist.
$wort erhält das Wort nach dem gesucht werden soll.
$poswort hier wird die Anfangsposition des Wortes ermittelt. Bedenke, dass ein Buchstabe einem Bit entspricht. Das ist insofern von Bedeutung, dass es noch andere PHP Funktionen gibt, welche Bits zurückgeben bzw. die Bits als Parameter benötigen.
$satzende die Anfangsposition des Wortes wird als Startwert der erneuten Suche nach dem nächsten Punkt angegeben.
$satzanfang Hier kommt jetzt eine do-while-Schleife ins Spiel. Die Schleife läuft das erstemal sowieso durch. Am Ende wird die Bedingung definiert. Sobald die Bedingung unwahr ist, stoppt die Schleife. Die Schleife macht folgendes eine Variable $n die mit Positionswert des gefundenen Wortes beginnt, wird bei jedem Schleifendurchlauf einen Wert tiefer gesetzt. Die eigentliche Aktion ist die Suche nach einem Punkt, welcher bei den ersten Schleifendurchläufen, dem Endpunkt des Satzes entspricht. Diese Suche wird ständig wiederholt, wobei der Startwert jedesmal um eins verringert wird ($n--). Erst wenn die Variable $satzanfang einen Punkt findet, der nicht dem $satzende entspricht, wird die Schleife abgebrochen.
Der Rest ist einfach, der Text wird mittels substr() ausgegeben, Startposition ist der Punkt am Anfang des Satzes plus 1. Die Anzahl der Zeichen ist $satzende minus $satzanfang.


hier mit Suche per Formulareingabe
Übersicht
Webdesign / PHP / mySQL / Dreamweaver MX Tipps
Copyright © Michael Albers
www.pastorpixel.de
www.pastorpixel.de PHP mySQL Tipps