Flo: Ausgabe von x-tem bis x-tem Vorkommen eines Zeichens

Hallo zusammen,

ich hab ein kleines Skript zur Volltextsuche in einer DB geschrieben das zu meinr Freude auch soweit tut, nun aber folgendes Problem:
Ähnlich wie bei den großen Suchmaschinen, soll nun die Fundstelle im Text inklusive einer bestimmten Zahl Wörter vor und nach dem Vorkommen des Suchausdrucks ausgegeben werden.
Wichtig dabei: Es sollen nicht einfach nur 50 Zeichen vor und nach dem Wort ausgegeben werden, weil das hässliche Wortverstümmelungen zur Folge hat, sondern wirklich an Leerzeichen orientiert.

Wer weiß vielleicht einen Trick oder sowas?

Danke für die Mühen

Flo

  1. Huhu Flo

    ich habe für so etwas mal folgenden regulären Ausdruck benutzt

    $s='finde mich';
    $range=80;
    $reg = '/\s|^/ms';

    wobei $range die Zahl der maximal auszugebenden Zeichen ist
    und $s das zu suchende Textstück.
    Ist jetzt nicht genau was du wolltest mit "n Wörtern" aber
    Wortgrenzen (whitespace) werden hierbei auch berücksichtigt.

    Vielleicht kannst Du ja was damit anfagen.

    Viele Grüße

    lulu

    1. Dankeschön,

      sieht schick aus...

      Leider tuts nich so, wie erwartet. Es gibt mir den gesamten Text wieder... Hab auch am Range rumgespielt und sogar bis null runtergeschruabt und es tut trotzdem nich...

      Grüße

      Flo

      1. Huhu Flo

        <?php

        $test="Huhu Flo, hier also mal ein Beispiel. Also das sollte mich doch <b>wundern</b>, wenn das nicht funktioniert. Das ist doch sogar mehrfach online und klappt immer? Nein nicht immer <i>aber</i> immer .... usw. <br>Viele Grüße lulu";

        $s="funktioniert";
        $range=10;

        preg_match('/\s|^/ms',strip_tags($test),$keep);

        echo $test;
        echo '<hr>';
        echo ' ... '.$keep[1].' ... ';

        ?>

        evtl. bist du darüber gestolpert wie preg_match das Array der Treffer belegt.

        <quote>
        If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.
        </quote>

        Viele Grüße

        lulu

        1. Danke Lulu,

          prinzipiell tut das wirklich, doch sobald ich meine Variablen anstelle Deiner fest definierten Texte $test und "funktioniert" setze, findet er nix mehr... *verzweifel*

          Danke trotzdem

          Flo

          1. Ok - ich habs...

            Dieser RegExp ist (zumindest mit preg_match) nicht Case-Sensitive und das bräuchte ich...
            Werde mal weiter probieren...

            Grüße

            Flo

            1. Ok: case-sensitive hab ich jetzt auch, aber trotzdem isses nochn Problem, wenn der gesuchte String am Anfang des zu durchsuchenden Strings steht...

              1. Huhu

                es funktioniert tatsächlich nicht für das erste und das letzte Wort.

                Schade :-(

                Viele Grüße

                lulu