Autor | Zpráva | ||
---|---|---|---|
lamatér Profil * |
#1 · Zasláno: 16. 11. 2007, 22:19:38
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 |
#2 · Zasláno: 16. 11. 2007, 22:35:13
Na tento konkrétní příklad bohatě stačí LIKE '%ová'.
|
||
lamatér Profil * |
#3 · Zasláno: 17. 11. 2007, 10:29:35
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 * |
#4 · Zasláno: 17. 11. 2007, 14:00:50
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 * |
#5 · Zasláno: 18. 11. 2007, 18:23:53
Zkuste nepoužívat [] pro znaky ale použijte jen řetězce.
|
||
Časová prodleva: 2 roky
|
|||
ge0rge Profil * |
#6 · Zasláno: 9. 6. 2009, 11:43:14
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 * |
#7 · Zasláno: 9. 6. 2009, 11:45:58
aha, uz vam rozumim
resenim je misto WHERE slovo REGEXP "^.[áý].$" pouzit toto WHERE slovo REGEXP "^.(á|ý).$" ... |
||
ge0rge Profil * |
#8 · Zasláno: 9. 6. 2009, 11:46:20
aha, uz vam rozumim
resenim je misto WHERE slovo REGEXP "^.[áý].$" pouzit toto WHERE slovo REGEXP "^.(á|ý).$" ... |
||
Časová prodleva: 15 let
|
0