Autor Zpráva
Sylar
Profil *
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 *
ř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 *
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
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
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 *
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

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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