Autor Zpráva
lamatér
Profil *
Další strašný problém s UTF8...
pokud hledám přímo v mysql dotazu pomocí
WHERE neco REGEXP "['.$hledane_znaky.']+"
a $hledane_znaky jsou například 'ová'
vybere mi to kromě 'ová' snad všechny více-bytové znaky, tedy 'oně', 'ovš', 'ovč', ...
v mysql manuálu o tom píšou:

Warning
The REGEXP and RLIKE operators work in byte-wise fashion, so they are not multi-byte safe and may produce unexpected results with multi-byte character sets. In addition, these operators compare characters by their byte values and accented characters may not compare as equal even if a given collation treats them as equal.

nicméně nepíšou o žádné více-bytové alternativě, takže co v takovém případě má čech dělat?
musím to znova projet regulárem v php?
nebo české znaky nahrazovat nějakým zástupným znakem?
Keilew
Profil
Na tento konkrétní příklad bohatě stačí LIKE '%ová'.
lamatér
Profil *
právě že ne... tomu reguláru odpovídají ty 3 znaky v neomezeném počtu a v libovolném opakování
to ová byl jen takový příklad možná nešťastně zvolený, každopádně tomu REGEXPu by odpovádalo i 'ooo', 'vovov' - což potřebuju,
ale i třeba 'věž' - což nepotřebuju XD
lamatér
Profil *
teď jsem zjistil, že zápisu
WHERE slovo REGEXP "^.[áý].$"
v UTF odpovídá třeba 'pár', ale 'pýr' už ne... jakože čistě logicky by měl
z toho plyne že REGEXP je v mysql s kódováním utf_cokoliv nepoužitelný
Kajman_
Profil *
Zkuste nepoužívat [] pro znaky ale použijte jen řetězce.
ge0rge
Profil *
coze ? ... to nedava smysl ... preci regularni vyraz ma urcitou podobu pokud chci jako druhou pozici prispustit vylucne znaky á a ý tak jinou moznost nez [áý] nemám, nebo snad ano?
ge0rge
Profil *
aha, uz vam rozumim

resenim je misto

WHERE slovo REGEXP "^.[áý].$"

pouzit toto

WHERE slovo REGEXP "^.(á|ý).$"

...
ge0rge
Profil *
aha, uz vam rozumim

resenim je misto

WHERE slovo REGEXP "^.[áý].$"

pouzit toto

WHERE slovo REGEXP "^.(á|ý).$"

...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: