Autor Zpráva
HomerJay
Profil
Zdravím.
Vždy som používal odstránenie diakritiky pomocou tohoto http://cs.wikibooks.org/wiki/PHP_prakticky/Odstran%C4%9Bn%C3%AD_diakritiky a nemal som problém, no teraz mi to nejako nefunguje. Mám totiž skript na nahrávanie obrázkov, no pri zmene názvu obrázku sa do vždy nejako dokafre. Napr. obrázok s názvom áľíščžý+;wtf.gif.jpg mi po odstránení diakritiky vyhodil názov áAlíL�ATLlý+;wtf.gif.jpg.

Neviete niekto čo s tým? Ďakujem.
panther
Profil
HomerJay:
možná víš, že pro práci s řetězci s dvoubitovými znaky se používají funkce mb_*. „mb_strtr“ sice neexistuje, ale nejsi první, kdo by o ni měl zájem. Dohledej si jí.
Joker
Profil
HomerJay:
Vždy som používal odstránenie diakritiky pomocou tohoto
Kterou konkrétně z těch tří uvedených variant?

Jestli tu single-byte variantu a řetězec je v UTF-8, tak to bude příčina.
HomerJay
Profil
Joker:
No, vlastne tú poslednú.
peta
Profil
HomerJay: Uloz program v utf-8 kodovani. Pravdepodobne to mas ulozene ve win-1250 a snazis se pracovat s utf-8. Pripadne jeste muze byt problem, pokud data nacistas z databaze, v chybnem nastaveni kodovani pro SET NAMES.
Zkousel jsi problem nejdriv googlovat (odstraneni kodovani chybne znaky)?

http://cs.wikibooks.org/wiki/PHP_prakticky/Odstran%C4%9Bn%C3%AD_diakritiky
1. iconv
2. // pro single-byte
3. // i pro multi-byte (napr. UTF-8)
Tam je to dost nestastne slepene do jednoho ramecku.
Ktera je ta posledni verze? Odpoved, posledni verze, nemusi byt jednoznacna.

Verze 2 pracuje tak, ze bere 1-byte znak z retezce 1 a nahradi za 1-byte znak z retezce 2. UTF-8 kodovani pro nektere znaky pouziva 2-byte zapis. Tato funkce veme prvni znak z 2-byte znaku a nahradi znakem na stejne pozici z retezce 2. Ale pak veme druhy znak nahradi ho znakem z retezce 2 (na pozici +1). Takze tam prida znak navic, ktery tam nema byt. Ve verzi 2, na te strance, tedy nejsou pouzite zadne znaky 2-byte. Ty je tam nejspis mas, pokud ji pouzivas. 2-byte znaky jsou pak pouzity ve verzi 3, s polem, ktera nahradi 1-byte nebo 2-byte znaky za 1-byte.

Potom se jeste pouziva verze 4 s \x + cislo
http://php.net/manual/en/function.strtr.php
priklad: troelskn at gmail dot com 23-Jan-2008 03:39
HomerJay
Profil
Pracujem s UTF-8 a používam tú tretiu - sú tri tak je to snáď posledná verzia :D strtr ktoré by malo podľa arrayu zmeniť písmena s diakritikou na klasické. No a nefunguje mi to, celé strtr.
Moderátor Chamurappi: Proč je zamčeno? Předpokládám, že omylem, odemykám.
HomerJay
Profil
Chamurappi:
Nie, nezamkol som to omylom, problém som vyriešil. Nakoniec mal peta pravdu. Aj keď som mal charset nastavený na UTF a vždy som pracoval s UTF, pri tomto súbore som zabudol nastaviť v PSPade formátovanie súboru na UTF-8. Samozrejme po nastavení formátu všetko fungovalo ako má, takže asi to môžeme zamknúť, ďakujem veľmi pekne všetkým :)
Toto téma je uzamčeno. Odpověď nelze zaslat.