Autor Zpráva
tito100
Profil
dobrý den. už som tu raz písal z podobným problémom. (nemůžem najist ten príspevok)

posielam cez post argument napríklad nazov=ěščřž (nazov=%EC%9A%E8%F8%9E)
a potrebujem z neho odstránit diakritiku. mám spravené :

function diakritika($text)
{
  return (strtr($text, 'ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýžABCDEFGHIJKLMNOPRSTUVWXYZ','aaccdeeeinoorstuuuyzaaccdeeeinoorstuuuyzabcdefghijklmnoprstuvexyz'));
}
 $string=(diakritika(htmlspecialchars_decode($string)));
 echo $string;
a výsledok : ěočřž
ind=a&okres=all&nazov=%EC%9A%E8%F8%9E[/url]
skúšal som ur různe veci. a výsledok je stále rovaký . scripty mám uložené v UTF-8

vopred dakujem

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Jake898
Profil
Neměla by spíš být místo funkce htmlspecialchars_decode() použita urldecode()? :-)
tito100
Profil
no. mnela, aj som hu tam mal, ako som skušal ine veci tak som to zmenil.
nicmene, ani aj mám $string=(diakritika(urldecod($string)));
tak to vypisuje rovnaký výsledok
tito100
Profil
zistil som že mam niejakú divnú tú funkciu
function diakritika($text)
{
  return (strtr($text, "ÁÄČÇĎÉĚËÍŇÓÖŘŠŤÚŮÜÝŽáäčçďéěëíňóöřšťúůüýžABCDEFGHIJKLMNOPRSTUVWXYZ","aaccdeeeinoorstuuuyzaaccdeeeinoorstuuuyzabcdefghijklmnoprstuvexyz"));
}
ked som tam dal ako argument : ěšččřžýá
vypísalo mi to : mnzbmfmfz™zľxzxb

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
Musulman
Profil *
Tohle je poněkud šitózní skript ale diakritiku z textu v UTF-8 odstraní.
$tab = array("\xc3\xa1"=>"a", "\xc3\xa4"=>"a", "\xc4\x8d"=>"c", "\xc4\x8f"=>"d", "\xc3\xa9"=>"e", "\xc4\x9b"=>"e", "\xc3\xad"=>"i", "\xc4\xbe"=>"l", "\xc4\xba"=>"l", "\xc5\x88"=>"n", "\xc3\xb3"=>"o", "\xc3\xb6"=>"o", "\xc5\x91"=>"o", "\xc3\xb4"=>"o", "\xc5\x99"=>"r", "\xc5\x95"=>"r", "\xc5\xa1"=>"s", "\xc5\xa5"=>"t", "\xc3\xba"=>"u", "\xc5\xaf"=>"u", "\xc3\xbc"=>"u", "\xc5\xb1"=>"u", "\xc3\xbd"=>"y", "\xc5\xbe"=>"z", "\xc3\x81"=>"A", "\xc3\x84"=>"A", "\xc4\x8c"=>"C", "\xc4\x8e"=>"D", "\xc3\x89"=>"E", "\xc4\x9a"=>"E", "\xc3\x8d"=>"I", "\xc4\xbd"=>"L", "\xc4\xb9"=>"L", "\xc5\x87"=>"N", "\xc3\x93"=>"O", "\xc3\x96"=>"O", "\xc5\x90"=>"O", "\xc3\x94"=>"O", "\xc5\x98"=>"R", "\xc5\x94"=>"R", "\xc5\xa0"=>"S", "\xc5\xa4"=>"T", "\xc3\x9a"=>"U", "\xc5\xae"=>"U", "\xc3\x9c"=>"U", "\xc5\xb0"=>"U", "\xc3\x9d"=>"Y", "\xc5\xbd"=>"Z");
$text = "kůň";
$text = strtr($text, $tab);
echo $text;
//kun
AM_
Profil
Jake898:
Neměla by spíš být místo funkce htmlspecialchars_decode() použita urldecode()?
Neměla, data jsou zakódovaná pouze v samotné URL, do _GET se už přenesou správně.

Soubory jsou sice v utf-8, ale máš i dobře nastavenou hlavičku <meta http-equiv="content-type" content="text/html;charset=utf-8"> ?

Jinak není problém použít to co Musulman, nebo nějakou "profesionálnější" funkci, např. String::webalize z Nette frameworku.

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:

0