> Ahoj, > resim jeden zapeklity problem: > > V MySQL databazi mam ulozena data, ktera jsou v cestine s diakritikou. V PHP > mam vytvoreny vyhledavaci script, ktery hleda ve vsech polich tabulky > databaze. Bunky jsou typu LongText. Problem je s vyhledanim ceskych slov, > resp. slov, ktera obsahuji nektere specificke ceske znaky s diakritikou. > Potrebuji aby vyhledavani nebylo case-sensitive ... to funfuje az na toto: > > pri hledani retezce "JIŘÍ" nebo "jiří" najde to same,.. to je OK. > pri hledani retezce "ŠIMON" nebo "šimon" najde jine vysledky (v prvnim > pripade vsechny Šimony s velkym Š a v druhem všechny s malym š) > > Vypada to, ze ma MySQL problem jen s některými českými znaky, protože "ř" > funguje a "š" ne. > > Dale bych potreboval, aby vyhledavani fungovalo i tak, ze mi to najde napr. > vsechny "Jiří" i kdyz zadam hledany retezec bez diakritiky... to znamena > "jiri". > > Muzete prosim poradit co s tim? Je treba do MySQL neco doinstalovat pro > podporu CZ? Pouzil jsem nevhodny typ LongText? Delam neco spatne? > > Diky moc,.. je to trochu zamotane > > Yd. > Dobry den, ja ve svych projektech pouzivam nasledujici kontrukci. Slouzi k vyhledavani bez ohledu na diakritiku. Neni to moc rychle, ale nastesti fulltextove prohledavani prispevku se casto zase tak nepouziva. Ve skriptech pozivam toto volani: "SELECT polozky FROM tabulka WHERE ".Odcesti($searchtext, 'nazevsloupecku') A funkce Odcesti vypada takto: <? function Odcesti($slovo,$nazevsloupce) { $exp = explode(" ", strtolower($slovo)); $query = implode("%", $exp); $query=StrTr($query, "\xC1\xC8\xCF\xC9\xCC\xCD\xBC\xD2\xD3\xD4\xD8\x8A". "\x8D\xDA\xD9\xDD\x8E\xE1\xE8\xEF\xE9\xEC\xED". "\xBE\xF2\xF4\xF3\xF8\x9A\x9D\xFA\xF9\xFD\x9E", "acdeeilnoorstuuyzacdeeilnoorstuuyz"); return " LOWER( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE($nazevsloupce, '\xC1','a'),'\xC8','c'),'\xCF','d'),'\xC9','e'),'\xCC','e'), '\xCD','i'),'\xBC','l'),'\xD2','n'),'\xD3','o'),'\xD4','o'), '\xD8','r'),'\x8A','s'),'\x8D','t'),'\xDA','u'),'\xD9','u'), '\xDD','y'),'\x8E','z'),'\xE1','a'),'\xE8','c'),'\xEF','d'), '\xE9','e'),'\xEC','e'),'\xED','i'),'\xBE','l'),'\xF2','n'), '\xF4','o'),'\xF3','o'),'\xF8','r'),'\x9A','s'),'\x9D','t'), '\xFA','u'),'\xF9','u'),'\xFD','y'),'\x9E','z')) like '%$query%'"; }?> Jana Kucerova juk@centrum.cz http://www.juk.cz/php/ Odkazy k PHP a MySQL na ceskem a slovenskem internetu.
This archive was generated by hypermail 2.1.2 : 01. 03. 2002, 11:05 CET