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

MyEgo.cz

home foto blogy mywindows.cz kontakt

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

PHP 03.09.04

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

  1. 1 Erik Hoffmann 03.09.04, 06:09:09
    FB

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

  2. 2 JohnyB 03.09.04, 06:09:18
    FB

    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 03.09.04, 06:09:24
    FB

    [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 03.09.04, 07:09:38
    FB

    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 03.09.04, 07:09:52
    FB

    [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 03.09.04, 08:09:36
    FB

    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 04.09.04, 01:09:32
    FB

    [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 04.09.04, 03:09:18
    FB

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

  9. 9 Michal Tulacek 04.09.04, 03:09:32
    FB

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

  10. 10 mitchi 05.09.04, 06:09:26
    FB

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

  11. 11 Michalek 12.08.06, 08:08:32
    FB

    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 21.08.06, 02:08:22
    FB

    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");