Teil String highlighten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Teil String highlighten

    Hallo,

    weiss jemand wie man einen Teilstring highlighten kann? Und zwar so
    dass es unabhängig vom Groß-Klein Buchstaben funktioniert.

    Beispiel 1:
    PHP-Code:
    $string "Hallo wie geht es dir?";
    $teilstring "GeHt"//kann immer anders sein... je nach lust und Laune des Users 
    gewünschte Ausgabe 1:
    Code:
    "Hallo wie [B]geht[/B] es dir?"
    Habe schon mit
    PHP-Code:
    $string str_replace($teilstring,"<b>$teilstring</b>",$string); 
    ausprobiert, funktioniert aber nur wenn der $teilstring exakt wie das Wort im $string ist.
    Den $teilstring mit strtolower umzuwandeln wäre keine Lösung denn es soll auch so eben funktionieren:

    Beispiel2:
    PHP-Code:
    $string "Hallo wie geHt es dir?"//je nachdem wie der User die Daten in der DB eingibt
    $teilstring "GEht"
    gewünschte Ausgabe2:
    Code:
    "Hallo wie [B]geHt[/B] es dir?"
    Bin dankbar für jeder Hilfe.

    Gruß

    P.
    In Flames - Pinbal Map
    Becoming the Archetype - No Fall Too Far
    Pantera

  • #2
    mit regulären ausdrücken solltest du das hinbekommen.
    MfG
    aim
    Lies mich jetzt!
    - OT-Tags-Liebhaber und BB-Code-Einrücker -

    Kommentar


    • #3


      Siehe auch str_ireplace(), ereg_replace(), preg_replace() und strtr().

      Kommentar


      • #4
        PHP-Code:
        $string "Hallo wie geht es dir?";
        $teilstring "GeHt"
        $string preg_replace("/$teilstring/i",'<span style="background-color:yellow">\\0</span>',$string); 
        Hoffe das hilft dir weiter.

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          danke Jahlives,

          war schon fast am verzweifeln. Ich konnte leider die str_ireplace() nicht verwenden denn ich habe nur php 4.3.4.
          Ich wusste das mit preg_replace() irgendwie gehen musste, bin aber immer in die Details gescheitert.
          Dein Code hat mir super geholfen!

          Eine Frage habe ich noch, was bewirkt \0, als platzhalter?
          In Flames - Pinbal Map
          Becoming the Archetype - No Fall Too Far
          Pantera

          Kommentar


          • #6
            Ich denke, dsa fügt die variable $teilstring an der zu replacenden stelle ein!

            Kommentar


            • #7
              Genau genommen müsste es \\0 (zwei Backslashes) heissen, das Forum frisst meist einen davon.
              Das steht für eine Backreferenz d.h. das ist sozusagen eine Var welche als Wert den Suchtreffer des regulären Ausdruckes hat. Wenn du den nicht verwenden würdest v.a. im Zusammenhang mit dem Modifikator i, der die Gross-Kleinschreibung ignoriert, dann würden dir Vars mit falschem Inhalt ersetzt.
              z.B. du suchst nach 'Name' ohne Gross-Klein
              Im Text steht 'Mein Name ist namentlich'
              Ohne die Backreferenz würde dir der preg_replace folgenden String zurückgeben:
              'Mein <span style="background-color:yellow;">Name</span> ist <span style="background-color:yellow;">Namentlich</span>'
              D.h. der RegExp verwendet in diesem Falle als Ersetzung immer den ersten Suchtreffer und das sieht irgendwie blöd aus.

              Gruss

              tobi
              Zuletzt geändert von jahlives; 03.11.2005, 18:36.
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                @firstlord
                Ich denke, dsa fügt die variable $teilstring an der zu replacenden stelle ein!
                Nein, wenn du die Var $teilstring einsetzen wolltest, dann schreibst du einfach $teilstring in den Replacement Teil.
                Mit \\0 sorgst du dafür, dass als Ersetzung der Treffer des RegExp verwendet wird.

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  ok, nochmal danke für die sehr ausführliche Erklärung Jahlives.
                  In Flames - Pinbal Map
                  Becoming the Archetype - No Fall Too Far
                  Pantera

                  Kommentar

                  Lädt...
                  X