Autor | Zpráva | ||
---|---|---|---|
Sylar Profil * |
#1 · Zasláno: 12. 7. 2008, 23:58:53
Zdravím,
získávám z formuláře název Města, který potřebuji zkontrolovat s databází, jestil už náhodou toto Město nebylo uloženo do DB. Nastává ale problém s uživateli kteří píšou cesky místo česky např. u Plzeň a Plzen, Hradec Králové a Hradec Kralove, což jsou stejná města ale jiné textové řetězce. Nevíte někdo jak to pořešit, jakou funkcí, aby mi to vyhodilo že Plzeň a Plzen je to samé ? Chci jen popostrčit k výsledku, nechci hotové řešení. Díky všem |
||
Marve Profil * |
#2 · Zasláno: 13. 7. 2008, 00:58:26
řekl bych, že problém máš i s velikostí písmen, různými zkratkami (což půjde asi těžko řešit) apod.
|
||
Sylar Profil * |
#3 · Zasláno: 13. 7. 2008, 01:30:33
Ano ano to taky, ale velký a malý můžu vyřešit přes fci str_replace a pole, bud bych přeházel všechna písmena na velká nebo na malá ale háčky a hacky fakt nevim no, proto sem píšu ... zkratky jsou samozřejmě úplná utopie ... to by poznal snad ani nešlo
|
||
Bubák Profil |
#4 · Zasláno: 13. 7. 2008, 09:47:07
Sylar
Google znáš? Asi ne. Možná i proto ti nikdo neporadil. Na dotaz odstranění diakritiky je hned na druhém místě známý článek na latríně. latrine.dgx.cz/odstraneni-diakritiky-z-ruznych-kodovani Zkratky: Nevím, jak to dělají, ale asi to nenude nic složitého, pro inspiraci koukni na: www.vlak.cz/blind/ConnForm.asp?tt=c Zajímavé je, že v té aplikaci jde zadat kombinaci malých a velkých písmen, ale kombinaci ala "čestina" už ne. Je to systém diakritika všude, nebo nikde. Příklady: r p r - nalezne roznov Pod radhostem - nalezne rožnov Pod radhoštěm - nanalezne roznov Pod radhoštěm - nenalezne teplice - dá na výběr, kritizováno jako nedostatek Obdobně to funguje i v "neřádech" s našeptávačem, dotaz, jak udělat našeptávač tu už párkrát byl, zkus pokledat, doporučiji ve větším časovém rozmezí, třeba 3650 dnů. |
||
WertriK Profil |
#5 · Zasláno: 13. 7. 2008, 10:51:47
Sylar
ale velký a malý můžu vyřešit přes fci str_replace Na to jsou fce strtolower resp. strtoupper. Odstranění diakritiky $text = Strtr($text, "áäčďéěíľĺňóöőôřŕšťúůüűýžÁÄČĎÉĚÍĽĹŇÓÖŐÔŘŔŠŤÚŮÜŰÝŽ", "aacdeeillnoooorrstuuuuyzAACDEEILLNOOOORRSTUUUUZ"); Takže by to možná šlo následovně, zadaný řetězec převést na malé písmena a odstranit diakritiku - v db mít uložené neupravené jméno (velké + malé písmena + diakritka) a jméno bez diakrtiky a napsané jen malými písmeny. |
||
Sylar Profil * |
#6 · Zasláno: 13. 7. 2008, 23:37:15
Bubák
google opravdu neznám ... co je to? latrine.dgx.cz/odstraneni-diakritiky-z-ruznych-kodovani jsem četl zkoušel ale např s Í mi to nic neudělalo. Udělal jsem si vlastní fci function lower_bez_hacku ($arg) { $arg = str_replace ( array ('á', 'ä', 'Á', 'Ä', 'č', 'Č', 'ď', 'Ď', 'é', 'É', 'ě', 'Ě', 'í', 'Í', 'ľ', 'ĺ', 'Ľ', 'Ĺ', 'ň', 'Ň', 'ó', 'ö', 'ő', 'ô', 'Ó', 'Ö', 'Ő', 'Ô', 'ř', 'Ř', 'š', 'Š', 't', 'Ť', 'ú', 'ů', 'ü', 'ű', 'Ú', 'Ů', 'Ü', 'Ű', 'ý', 'Ý', 'ž', 'Ž'), array ('a', 'a', 'a', 'a', 'c', 'c', 'd', 'd', 'e', 'e', 'e', 'e', 'i', 'i', 'l', 'l', 'l', 'l', 'n', 'n', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'r', 'r', 's', 's', 't', 't', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'y', 'y', 'z', 'z'), $arg ); $arg = strtolower($arg); return $arg; } používám ji na maily a URL adresy, což jsem potřeboval, funguje perfektně. Odkaz cos mi poslal na IDOS je spíše úsměvný, předpokládám že to také měl být že ano :-) IDOS má vlastní DB měst a s těmi porovnává zadný řetězec slovo od slova, proto to bere i ty zkratky. V mé aplikaci DB měst vytvářejí sami uživatelé. Tabulka měst je na začátku prázdná a naplňují jí sami uživatelé tzn. našeptávač -> sice dobrý ápad ale v mém případě by byl takřka nepoužitelný. Pokud mi tam první uživatel uloží "Plze" a další "Plzeň nebo Plzen" db to logicky vyhodnotí jako dvě odlišná města protože to porovnává pouze s tím co zadal první uživatel a tj. "Plze" ... Při uložení db odstranim diakritku, první písmeno slova zvětším (bude-li jích více např. Hradec Králové), ostatní nechám malá nebo zmenším nebudou-li. To je jediné co s tím v mém případě mohu udělat. Dělat db všech měst v CZ a SK se mi fakt nechce :-) Díky všem co přispěli do diskuse |
||
Časová prodleva: 17 let
|
0