REGEXP und diakritische / Multibytezeichen oder: Suche mit Wortgrenzen

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

  • REGEXP und diakritische / Multibytezeichen oder: Suche mit Wortgrenzen

    Hallo,

    da REGEXP nicht multibytesicher ist, stoße ich bei meiner Suchfunktion auf Schwierigkeiten.

    Ich will eine Tabelle nach einem beliebigen String an beliebiger Stelle durchsuchen. Mit LIKE komme ich nicht weiter, da ich es hier nicht geschafft habe, die Wortgrenzen richtig zu erkennen. Gefunden werden soll z. B. der String

    "und"

    in Textpassagen wie

    "Und gestern ...", "Heute und gestern", "Gestern und.", "Und?" etc.

    nicht jedoch in Textpassagen wie

    "Hund", "Undefinierbar" usw.

    Mit REGEXP und der Beachtung von Wortgrenzen funktioniert das natürlich einwandfrei - so lange keine diakritischen Zeichen im Suchbegriff enthalten sind.

    Etwas wie
    PHP-Code:
    WHERE einetextspalte REGEXP '[[:<:]]grün[[:>:]]' 
    Liefert natürlich keine Treffer, obgleich etwas wie "Elefanten sind grün." im Text vorkommt.

    Gibt es hier irgendwelche Tricks, Erfahrungen usw., wie sich dieses Problem bewerkstelligen lässt? Selbstverständlich lasse ich mich auch eines besseren belehren und greife gerne auf LIKE zurück, wenn ein Wort richtig und sinnig (s. o.) getroffen wird.

    Mit CONVERT und COLLATE hatte ich es bereits versucht, jedoch ohne Erfolg. Der genutze Zeichensatz ist UTF-8, die Kollation utf8_unicode_ci.

    Ach ja, ich kann vorab Umlaute nicht einfach auf beiden Seiten durch "ae", "ue" usw. ersetzen, da die Inhalte in 16 Sprachen angelegt sind und hier eine entsprechend große Menge an diakritischen Zeichen anfällt. Die Problematik bezieht sich also nicht nur auf deutsche Umlaute.

    Eine meiner Ideen war, grundsätzlich alle Zeichen, die nicht a-Z sowie 0-9 und _ sind, auf beiden Seiten zu entfernen (Blähfásêl => blhfsl), jedoch ist mir das SQL-seitig mit REGEXP nicht gelungen.

    Irgendwelche Ideen?

    pb
Lädt...
X