martin: Suchworte markieren

Hallo, auf einer meiner php-Seiten gibt es ein Suchfunktion, die meine Datenbank nach bestimmten eingegebenen Begriffen durchsucht. Danach wird die Seite, auf der sich der Begriff befindet geöffnet. Klappt wunderbar.
Jetzt möchte ich das Suchwort auf der gefundenen Seite blau hinterlegen (falls dieses mehrmals vorkommt, dann alle gefundenen Worte).
Wie stelle ich das am besten an? Vielleicht gibt es irgendwo ein Beispiel?
Gruß martin

  1. Hallo Martin.

    Am einfachsten geht das mit str_replace oder ereg_replace.

    $newString = str_replace($suchString,"<font class=highlight>".$suchString."</font>",$ergebniseintrag);

    Sicherer und "besser" geht es mit regular Expressions
    (falls ein Suchwort bspw. innerhalb von HTML gefunden würde, etc.)

    Oder du suchst dir innerhalb des Ergebnis-Strings die Anfangs- und Endposition des Suchbegriffs und machst das mit substr();

    Grüße
    Sascha

    1. Hallo Sascha,

      $newString = str_replace($suchString,"<font class=highlight>".$suchString."</font>",$ergebniseintrag);

      mit dem PHP bin ich einverstanden, mit dem HTML nicht. <font> ist deprecated und man muss in XHTML immer Anführungszeichen bei Attributen verwenden:

      $newString = str_replace($suchString,"<span class="highlight">".$suchString."</span>",$ergebniseintrag);

      Grüße,

      Christian

      1. Hallo Christian.

        Richtig, XHTML will lt. W3C immer Anführungszeichen um Attribut-Werte.
        Es ging aber in erster Linie ums PHP, und eine spezielle HTML-Version war schließlich nicht gefordert.

        Aber im Sinne der Reinheit des Codes werde ich in Zukunft versuchen, etwas weniger willfährig mit meinen Code-Häppchen umzugehen :-)

        Thanks for the advise
        Grüße
        Sascha

  2. Hallo, vielen Dank für Eure Hinweise. Gruß martin