Užitečné funkce pro PHP - díl 4.

Dnes jsem řešil takový zábavný problém, automatický převod cyriliky na latinku, kvůli SEO URL, tedy aby to místo Советский Союз zcela automaticky vytvořilo sovetskij-sojuz. Fonetický přepis do latinky. A vyšla mi z toho tato funkce pro PHP, doufám, že se bude hodit i ostatním:

$global_utf=
  explode(',',
   "КВ,кв,КС,кс,А,а,Б,б,Ц,ц,Д,д,Э,Е,е,Ф,ф,Г,г,Х,х,".
   "И,и,Й,й,К,к,Л,л,М,м,Н,н,О,о,П,п,Р,р,С,с,".
   "Т,т,У,у,В,в,В,в,Ы,ы,З,з,Ч,ч,Ш,ш,Щ,щ,Ж,ж,".
   "я,ь,ю,Ю");
$global_asc=
  explode(',',
   "Q,q,X,x,A,a,B,b,C,c,D,d,E,E,e,F,f,G,g,H,".
   "h,I,i,J,j,K,k,L,l,M,m,N,n,O,o,P,p,R,r,S,".
   "s,T,t,U,u,V,v,W,w,Y,y,Z,z,Ch,ch,Sh,sh,Sht,".
   "sht,Zh,zh,ja");

function utf2ascii($title){
  global $global_utf,$global_asc;
  $i=0;
  foreach ($global_utf as $s)
   $title=
    str_replace(trim($s),trim($global_asc[$i++]),$title);
  return $title;
} 

Teď by bylo ještě zajímavé vyřešit takový fonetický přepis japonštiny, korejštiny a čínštiny 🙂

Komentáře 12

  1. #1 Erik Hoffmann

    A slovenčina? 🙂 Zo slovenčiny tam chýba ešte ŕ a ô.

  2. #2 JohnyB

    Vypada zajimave, je to urcite kompletni foneticky prepis? Nechce se mi nad tim moc premyslet... A je to foneticky prepis na cestinu nebo anglictinu? Prijde mi to jako takovy mix.

    Jinak ten tvuj "zert" by se mozna dal zrealizovat - cinstina se da prevest na pinyin, popripade nejako vyuzit tohoto: http://zhongwen.com/x/faq4.htm...
    Japonska katakana a hiragana by se taky snad daly nejak prevest.

  3. #3 Radek Hulán autor webu ▲10 ▼0

    [2] kontrolovala to jedna ruska, a řekla, že to je ok.. 😉 podívej se třeba sem a porovnej si automaticky generované URL kategorie a název..

  4. #4 Marek

    Dobry den, neumim prpgramovat ani pouzit tuhle fukci ktera by se mi hodila

    slo by nejak popsat jak se to pouziva nebo z toho udealt programek aby to prevadelo ?

  5. #5 Radek Hulán autor webu ▲10 ▼0

    [4] pokud někdo neumí programovat, tak je mu tato funkce k ničemu 😉 A kdo umí, tomu to ušetří kus práce a shánění rusky mluvících občanů 😉

  6. #6 TimJ

    Jen bych dodal, že komu je tahle funkce na nic a potřebuje jen její funkčnost občas využít (viz [4]), tak doporučuju http://www.2cyr.com/. Letos v létě jsem to hojně využíval v práci 🙂.

  7. #7 JohnyB

    [3] Jo, tak je to nejaky anglicky prepis. Ale zarazi me tam prave nektere "j" misto anglickych "y"... Ale fungovat to funguje, pokud je to z rukeho hlediska v poradku, neni co resit.

  8. #8 Raven

    Z ruskyho hlediska v pohode. 😉 A ted to mas od dvou rusu rADo. 😉 😄 Jinak pekna vecicka, dik. 😉 To se mi bude urcite hodit a aspon se s tim nemusim patlat.

  9. #9 Michal Tulacek

    Opacny smer se da najit tady 😄
    http://sweb.cz/zantovsky/transkriptor/...
    javascriptova kravinka...

  10. #10 mitchi

    já jsem nedávnou použil http://home.tiscali.cz/ca275164//ruzne/azbuka.htm... tak dobrý

  11. #11 Michalek

    Dovolím si poděkovat za užitečnou funkci a upozornit na možnou chybu? Zaprvý je to trošku vůči sobě posunutý (což asi dle řádkového dělení nebyl záměr?) - "české h" by mělo být na prvním řádku, "české s" na druhém řádku a "sht,Zh,zh" na konci řádku třetího.
    Na posledním řádku tím pádem chybí tři poslední znaky; první chybějící je prý "tvrdý znak" (ten se nepřekládá) a poslední dva se podle ruštináře překládají jako "ju".
    Ale možná se mýlím.

  12. #12 los_adios ▲1 ▼0

    Děkuju, je to fajn funkce. Takhle by měla být snad už kompletní..

    $global_utf=
    explode(',',
    "КВ,кв,КС,кс,А,а,Б,б,Ц,ц,Д,д,Э,э,Е,е,Ф,ф,Г,г,Х,х,".
    "И,и,Й,й,К,к,Л,л,М,м,Н,н,О,о,П,п,Р,р,С,с,".
    "Т,т,У,у,В,в,В,в,Ы,ы,З,з,Ч,ч,Ш,ш,Щ,щ,Ж,ж,".
    "Я,я,Ю,ю,ъ,ь"😉;
    $global_asc=
    explode(',',
    "Q,q,X,x,A,a,B,b,C,c,D,d,E,e,E,e,F,f,G,g,H,h,".
    "I,i,J,j,K,k,L,l,M,m,N,n,O,o,P,p,R,r,S,s,".
    "T,t,U,u,V,v,W,w,Y,y,Z,z,Ch,ch,Sh,sh,Sht,sht,Zh,zh,".
    "Ja,ja,Ju,ju"😉;