Viennamade: Wörter hervorheben

Hallo liebe Forumsteilnehmer!

Wenn PHP eine Seite darstellt, dann sollen bestimmte Worte hervorgehoben werden. Diese Worte stehen in einem Array. Wie macht man das in etwa?

(Der Anwender hat mit der "Such-Seite" nach bestimmten Worten gesucht, klickt er eine der gefundenen Seiten an, sollen dort die gesuchten Wörter hervorgehoben werden.)

Beste Grüße
Viennamade

  1. Hallo Viennamade,

    Wenn PHP eine Seite darstellt, dann sollen bestimmte Worte hervorgehoben werden. Diese Worte stehen in einem Array. Wie macht man das in etwa?

    ich würde das so machen: Wörter zu einem String "zusammenkleben" (mit | voneinander getrennt), dann noch ein '/(' davor und ein ')/' dahinter und fertig ist der reguläre Ausdruck für preg_replace. Als zweiten Parameter nimmt man dann noch "<strong>$1</strong>" o.ä. und fertig ist die Hervorhebung: :-)

    $woerter = array('hallo','hat','mit');
      $reg = '/('.implode('|',$woerter).')/i';
      echo preg_replace($reg,"<strong>$1</strong>",$str);

    (wobei in $str der hervorzuhebende Text steht)

    Grüße aus Nürnberg
    Tobias

    [1] ggf. muss man eben noch Zeichen entschärfen, auf Wortgrenzen (\b) prüfen (/(wort)\b/ z.B. findet 'wort' aber nicht 'worte'), und/oder ein 'i' für das Ignorieren von Groß-/Kleinschreibung dahinterhängen

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Tobias,

      echo preg_replace($reg,"<strong>$1</strong>",$str);

      was ist an "<strong>" eigentlich besser als an "<b>", bzw. warum hast du es in diesem Fall verwendet?

      Schöne Grüße
      Julian

      1. Hallo Julian,

        echo preg_replace($reg,"<strong>$1</strong>",$str);
        was ist an "<strong>" eigentlich besser als an "<b>", bzw. warum hast du es in diesem Fall verwendet?

        Mit <strong> kennzeichnest du einen Text als hervorgehoben, und mit <b> lediglich als fett - es ist Auszeichnungsmäßig eben sinnvoller.

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    2. Hallo Tobias!

      Wenn PHP eine Seite darstellt, dann sollen bestimmte Worte hervorgehoben werden.
      ich würde das so machen: Wörter zu einem String "zusammenkleben" (mit | voneinander getrennt), dann noch ein '/(' davor und ein ')/' dahinter und fertig ist der reguläre Ausdruck für preg_replace. Als zweiten Parameter nimmt man dann noch "<strong>$1</strong>" o.ä. und fertig ist die Hervorhebung: :-)

      Oh Weia! Seit Wochen klicke ich hier immer die Postings bezüglich preg_replace & Co weg und denke mir: Naja ... OK, jetzt weiß ich, das muß ich mir also auch anschauen. Danke für Deine Antwort und Danke für das Beispiel!

      Beste Grüße
      Viennamade

  2. Hallo!

    Wenn PHP eine Seite darstellt, dann sollen bestimmte Worte hervorgehoben werden. Diese Worte stehen in einem Array. Wie macht man das in etwa?

    Du könntest mit str_replace ein HTML-Konstrukt um die Wörter legen, also z. B.
    str_replace($wort,"<b>".$wort."</b>",$text);

    Schöne Grüße
    Julian

    1. Hallo!

      Wenn PHP eine Seite darstellt, dann sollen bestimmte Worte hervorgehoben werden.

      Du könntest mit str_replace ein HTML-Konstrukt um die Wörter legen, also z. B.
      str_replace($wort,"<b>".$wort."</b>",$text);

      Na das ist aber banal :-)

      Danke & Beste Grüße
      Viennamade

    2. Hallo Julian,

      str_replace($wort,"<b>".$wort."</b>",$text);

      so geht es natürlich (mit einer kleinen Schleife drum) auch - nur kannst du damit nicht unabhängig von Groß-/Kleinschreibung und Wortgrenzen suchen :-P

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      1. Hallo Tobias,

        str_replace($wort,"<b>".$wort."</b>",$text);
        so geht es natürlich (mit einer kleinen Schleife drum) auch - nur kannst du damit nicht unabhängig von Groß-/Kleinschreibung und Wortgrenzen suchen :-P

        Dafür ist es übersichtlicher und braucht weniger Rechenleistung *g*.

        Schöne Grüße
        Julian

      2. Hello,

        str_replace($wort,"<b>".$wort."</b>",$text);
        so geht es natürlich (mit einer kleinen Schleife drum) auch - nur kannst du damit nicht unabhängig von Groß-/Kleinschreibung und Wortgrenzen suchen :-P

        Wieso "Schleife drum"? str_replace hat doch ne eingebaute Schleife und arbeitet bestens mit Arrays.

        http://de3.php.net/manual/en/function.str-replace.php

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
          Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
          Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen