ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

перегон текста в транслит и в RuEn
  #1  
Старый 07.03.2008, 11:51
vp$
Участник форума
Регистрация: 22.10.2007
Сообщений: 138
Провел на форуме:
2454040

Репутация: 177
Отправить сообщение для vp$ с помощью ICQ
По умолчанию перегон текста в транслит и в RuEn

многие как и я наверно, не раз перекапывали пол инета в поиске русских словарей написаных на транслите или на английской раскладке,
ну вот сидя на работе, я решил не скучать и написал такой интересный скриптик,
вобщем делам словарики теперь сами
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>

vp$ © 2008 www.GraBBerZ.com
 
Ответить с цитированием

  #2  
Старый 07.03.2008, 12:17
Naydav
Постоянный
Регистрация: 30.12.2006
Сообщений: 434
Провел на форуме:
849583

Репутация: 210
По умолчанию

Ну в продолжении темы тогда
понятно для чего функция

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  
Старый 07.03.2008, 12:56
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,188
Провел на форуме:
6023777

Репутация: 2642


Отправить сообщение для NOmeR1 с помощью ICQ
По умолчанию

Боян. И почему не в общей теме?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ