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