PDA

Просмотр полной версии : перегон текста в транслит и в RuEn


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

http://i031.radikal.ru/0803/33/ac4761d84f44.jpg

vp$ © 2008 www.GraBBerZ.com

Naydav
07.03.2008, 12:17
Ну в продолжении темы тогда :)
понятно для чего функция

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;
}

NOmeR1
07.03.2008, 12:56
Боян. И почему не в общей теме?