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; 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.