перегон текста в транслит и в RuEn

Discussion in 'PHP' started by vp$, 7 Mar 2008.

  1. vp$

    vp$ Elder - Старейшина

    Joined:
    22 Oct 2007
    Messages:
    65
    Likes Received:
    68
    Reputations:
    19
    многие как и я наверно, не раз перекапывали пол инета в поиске русских словарей написаных на транслите или на английской раскладке,
    ну вот сидя на работе, я решил не скучать и написал такой интересный скриптик,
    вобщем делам словарики теперь сами
    PHP:
    <html>

    <head>
      <title>Translit & RuEn</title>
    </head>
    <style>
       body
       {
        padding:10px;
        background:#424242;
        font-family:tahoma, verdana, arial;
        font-size:11px;
        text-align:center;
        color:#B9B9BD;
       }
       a:link, a:hover, a:visited
       {
        color:#D4D4D4;
        text-decoration: none;
       }
       input
       {
        vertical-align:middle;
        margin:1px 0;
        padding-right:10px;
        border:1px solid #E7AC1D;
        padding:2px;
        background:#363940;
        color:#B9B9BD;
       }
       textarea
       {
        vertical-align:middle;
        margin:1px 0;
        padding-right:10px;
        border:1px solid #E7AC1D;
        padding:2px;
        background:#363940;
        color:#B9B9BD;
       }
       form
       {
        padding:10px;
        border:1px solid #666;
        width:200px;
        margin:0 auto;
       }
      </style>

    <body>

    <?php
    error_reporting 
    (0);
    set_time_limit(0);
    ignore_user_abort(1);

    function 
    Translit($text){
    $data=explode("
    "
    ,$text);
    $alphas=array(
    'ы'=>'i',
    'й'=>'y',
    'е'=>'e',
    'ё'=>'yo',
    'я'=>'ya',
    'щ'=>'shc',
    'ш'=>'sh',
    'ч'=>'ch',
    'ю'=>'yu',
    'ц'=>'ts',
    'у'=>'u',
    'в'=>'v',
    'и'=>'i',
    'д'=>'d',
    'т'=>'t',
    'б'=>'b',
    'п'=>'p',
    'о'=>'o',
    'н'=>'n',
    'ф'=>'f',
    'э'=>'e',
    'ь'=>'\'',
    'ъ'=>'\'',
    'з'=>'z',
    'л'=>'l',
    'к'=>'k',
    'с'=>'s',
    'м'=>'m',
    'р'=>'r',
    'х'=>'h',
    'ж'=>'j',
    'г'=>'g',
    'а'=>'a'
    );

    $total='';
    foreach(
    $data as $k=>$v){
        foreach(
    $alphas as $id=>$value){
            if(
    strcasecmp($v,$value)){
               
    $v StrToLower(trim($v));
               
    $v=str_replace($id,$value,$v);
            }
        }
        
    $total.=$v."\n";
    }
    return 
    $total;
    }

    function 
    RuEn($text){
    $data=explode("
    "
    ,$text);
    $alphas=array(
    'ы'=>'s',
    'й'=>'q',
    'е'=>'t',
    'ё'=>'`',
    'я'=>'z',
    'щ'=>';',
    'ш'=>'i',
    'ж'=>';',
    'ч'=>'x',
    'ю'=>'.',
    'ц'=>'w',
    'у'=>'e',
    'в'=>'d',
    'и'=>'b',
    'д'=>'l',
    'т'=>'n',
    'б'=>',',
    'п'=>'g',
    'о'=>'j',
    'н'=>'y',
    'ф'=>'a',
    'э'=>'\'',
    'ь'=>'m',
    'ъ'=>']',
    'з'=>'p',
    'л'=>'k',
    'к'=>'r',
    'с'=>'c',
    'м'=>'v',
    'р'=>'h',
    'х'=>'[',
    'г'=>'u',
    'а'=>'f'
    );

     
    $total='';
      foreach(
    $data as $k=>$v){
        foreach(
    $alphas as $id=>$value){
            if(
    strcasecmp($v,$value)){
               
    $v StrToLower(trim($v));
               
    $v=str_replace($id,$value,$v);
            }
        }
         
    $total.=$v."\n";
      }
     return 
    $total;
     }

     if (
    $_POST['file'] || $_POST['text'] ){
        if (
    $_POST['file'] && $_POST['text']){echo '<h1>Определитесь нах)) Файл или тескт</h1>'; exit;}
        elseif (
    $_POST['file'] &&  $_POST['type']=='Translit')
        {
    $result Translit (file_get_contents($_POST['file']));
         
    $fname basename($_POST['file'], ".txt");
         
    $fw fopen ($fname."_translit.txt","a+");
         
    fwrite($fw,$result);
         echo 
    '<h1>Готово нах))</h1><br><br><a href="'.$fname.'_translit.txt">Скачать</a>';
         
    fclose($fw);}
         elseif (
    $_POST['file'] &&  $_POST['type']=='RuEn')
        {
    $result RuEn (file_get_contents($_POST['file']));
         
    $fname basename($_POST['file'], ".txt");
         
    $fw fopen ($fname."_RuEn.txt","a+");
         
    fwrite($fw,$result);
         echo 
    '<h1>Готово нах))</h1><br><br><a href="'.$fname.'_RuEn.txt">Скачать</a>';
         
    fclose($fw);}
         elseif (
    $_POST['text'] &&  $_POST['type']=='RuEn')
        {
    $result RuEn ($_POST['text']);
         echo 
    '<h1>Готово нах))</h1><br>'.$result; }
         elseif (
    $_POST['text'] &&  $_POST['type']=='Translit')
        {
    $result Translit ($_POST['text']);
         echo 
    '<h1>Готово нах))</h1><br>'.$result; }
         }

         else
     {
            echo(
    '<form method=post>
                 Словарик на русском<br>
                 <input type=\'text\' name=\'file\'><br>
                 <label>Translit</label><input type=\'radio\' name=\'type\' value=\'Translit\' CHECKED> <input type=\'radio\' name=\'type\' value=\'RuEn\'> <label>RuEn</label><br>
                 Или введите слова тут<br>
                 <textarea name=\'text\' cols=\'20\' rows=\'8\'></textarea><br><br>
                <input type=submit name=start value=\'Start\'>
                 </form>'
    );
                 }


    ?>

    </body>

    </html>
    [​IMG]

    vp$ © 2008 www.GraBBerZ.com
     
  2. Naydav

    Naydav Elder - Старейшина

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Ну в продолжении темы тогда :)
    понятно для чего функция

    PHP:
    function win2utf($s)
        {
                for(
    $i=0$m=strlen($s); $i<$m$i++)
                {
                    
    $c=ord($s[$i]);
                    switch(
    $c)
                    {
                        case 
    178$t.=chr(0xD0).chr(0x86); break;
                        case 
    179$t.=chr(0xD1).chr(0x96); break;
                        case 
    175$t.=chr(0xD0).chr(0x87); break;
                        case 
    191$t.=chr(0xD1).chr(0x97); break;
                        case 
    170$t.=chr(0xD0).chr(0x84); break;
                        case 
    186$t.=chr(0xD1).chr(0x94); break;
                        case 
    129$t.=chr(0xD0).chr(0x93); break;
                        case 
    131$t.=chr(0xD0).chr(0xB3); break;
                        default:
                            if (
    $c<=127) {$t.=chr($c); continue; }
                            if (
    $c>=192 && $c<=207)    {$t.=chr(208).chr($c-48); continue; }
                            if (
    $c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
                            if (
    $c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
                            if (
    $c==184) { $t.=chr(209).chr(209); continue; };
                            if (
    $c==168) { $t.=chr(208).chr(129);  continue; };
                        break;
                    }
                }
                return 
    $t;
         }
     
  3. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Боян. И почему не в общей теме?