Matthias Apsel: Suchergebnisse hervorheben

Om nah hoo pez nyeetz, alle!

Ich suche in einer sqlite-DB mit dem Suchbegriff, sagen wir "berlin". In der Datenbank gibt es "Berliner Bär".

Da die Suche case-insensitiv ist, wird "Berliner Bär" gefunden.

Ich zeige die Ergebnisse an und möchte den Suchbegriff hervorheben, resultierend in "<b>Berlin</b>er Bär".

3 Möglichkeiten:

  • str_replace ('berlin', '<b>berlin</b>', 'Berliner Bär') findet den Suchbegriff nicht, logisch

  • str_ireplace ('berlin', '<b>berlin</b>', 'Berliner Bär') ergibt "<b>berlin</b>er Bär", ebenso logisch

  • preg_replace() Leider hab ich keinen Plan, wie ein regulärer Ausdruck aussehen muss, der case-insensitiv suchen aber case-sensitiv ersetzen soll

Gibt es vielleicht noch andere Ideen?

Matthias

--
1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
  1. Gibt es vielleicht noch andere Ideen?

    preg_replace_callback() schon versucht? :)

  2. Hallo Matthias,

    * preg_replace() Leider hab ich keinen Plan, wie ein regulärer Ausdruck aussehen muss, der case-insensitiv suchen aber case-sensitiv ersetzen soll

    das:

    preg_replace( '~(berlin)~i', '<b>$1</b>', 'Berliner Bar');

    ergibt bei mir <b>Berlin</b>er Bär.

    Gruß,
    Tobias

    1. preg_replace( '~(berlin)~i', '<b>$1</b>', 'Berliner Bar');

      Dem schließe ich mich an, vergiss meinen Kommentar - der callback ist nicht nötig - es ist schon spät.

      1. Om nah hoo pez nyeetz, suit!

        preg_replace( '~(berlin)~i', '<b>$1</b>', 'Berliner Bar');

        ... es ist schon spät.

        Stimmt, deshalb werde ich es morgen testen. Vielen Dank.

        Matthias

        --
        1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
        1. Om nah hoo pez nyeetz, Matthias Apsel!

          Stimmt, deshalb werde ich es morgen testen. Vielen Dank.

          passt. Danke.

          Matthias

          --
          1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif