Случалось ли вам
переписываться с русскими, которые
живут за границей и у которых,
соответственно, нет клавиатуры с
кириллицей? Эти люди, обычно, пишут
языком с интересным названием "translit"
(или транслитерация, выражаясь по-русски).
Кто в танке, поясняю - это русский
текст, набранный латинскими
буквами. Его, естественно, очень
трудно читать непривыкшему
человеку... Но зачем мучаться, если
можно написать программу, которая
бы перекодировала этот транслит в
нашу родную кириллицу. Написанием
этой программы мы и займёмся в этой
статье.
Итак, как Вы уже поняли,
сегодня мы напишем на PHP
программу которая перекодирует
translit в кириллицу и обратно. Лично
мне это программа очень помогает, т.к.
мне часто приходится иметь дело с
письмами, написанными на транслите.
Это и вынудило меня написать
такую программу. Ну что ж,
давайте, наконец, приступим к делу.
Сама по себе программа (скрипт)
небольшая и будет состоять всего
из одного файла. Предлагаю назвать
его perekod.php. Сначала в этом файле
создаём форму с полем ввода для
текста. Код будет выглядеть так:
<?
echo"
<form method=\"post\">
<table width=100% align=100%>
<tr><td align=center bgcolor=\"#F9F9F9\"><input
type=radio value=ruslat name=translite> <font
face=verdana size=2>С русского на латиницу</font>
<input type=radio value=latrus name=translite> <font
face=verdana size=2>С латиницы на русский</font></td></tr>
<tr><td align=center bgcolor=\"#F9F9F9\">
<textarea name=body cols=65 rows=10> /*
Пока мы создали только форму до
поля ввода текста. Всё выполнение
функций будет происходить именно в
ней */
/* Теперь задаём
сами функции перекодировки translita в
кириллицу и обратно. Вот код: */
function ruslat ($string) #
Задаём функцию перекодировки
кириллицы в транслит.
{
$string = ereg_replace("ж","zh",$string);
$string = ereg_replace("ё","yo",$string);
$string = ereg_replace("й","i",$string);
$string = ereg_replace("ю","yu",$string);
$string = ereg_replace("ь","'",$string);
$string = ereg_replace("ч","ch",$string);
$string = ereg_replace("щ","sh",$string);
$string = ereg_replace("ц","c",$string);
$string = ereg_replace("у","u",$string);
$string = ereg_replace("к","k",$string);
$string = ereg_replace("е","e",$string);
$string = ereg_replace("н","n",$string);
$string = ereg_replace("г","g",$string);
$string = ereg_replace("ш","sh",$string);
$string = ereg_replace("з","z",$string);
$string = ereg_replace("х","h",$string);
$string = ereg_replace("ъ","''",$string);
$string = ereg_replace("ф","f",$string);
$string = ereg_replace("ы","y",$string);
$string = ereg_replace("в","v",$string);
$string = ereg_replace("а","a",$string);
$string = ereg_replace("п","p",$string);
$string = ereg_replace("р","r",$string);
$string = ereg_replace("о","o",$string);
$string = ereg_replace("л","l",$string);
$string = ereg_replace("д","d",$string);
$string = ereg_replace("э","yе",$string);
$string = ereg_replace("я","jа",$string);
$string = ereg_replace("с","s",$string);
$string = ereg_replace("м","m",$string);
$string = ereg_replace("и","i",$string);
$string = ereg_replace("т","t",$string);
$string = ereg_replace("б","b",$string);
$string = ereg_replace("Ё","yo",$string);
$string = ereg_replace("Й","I",$string);
$string = ereg_replace("Ю","YU",$string);
$string = ereg_replace("Ч","CH",$string);
$string = ereg_replace("Ь","'",$string);
$string = ereg_replace("Щ","SH'",$string);
$string = ereg_replace("Ц","C",$string);
$string = ereg_replace("У","U",$string);
$string = ereg_replace("К","K",$string);
$string = ereg_replace("Е","E",$string);
$string = ereg_replace("Н","N",$string);
$string = ereg_replace("Г","G",$string);
$string = ereg_replace("Ш","SH",$string);
$string = ereg_replace("З","Z",$string);
$string = ereg_replace("Х","H",$string);
$string = ereg_replace("Ъ","''",$string);
$string = ereg_replace("Ф","F",$string);
$string = ereg_replace("Ы","Y",$string);
$string = ereg_replace("В","V",$string);
$string = ereg_replace("А","A",$string);
$string = ereg_replace("П","P",$string);
$string = ereg_replace("Р","R",$string);
$string = ereg_replace("О","O",$string);
$string = ereg_replace("Л","L",$string);
$string = ereg_replace("Д","D",$string);
$string = ereg_replace("Ж","Zh",$string);
$string = ereg_replace("Э","Ye",$string);
$string = ereg_replace("Я","Ja",$string);
$string = ereg_replace("С","S",$string);
$string = ereg_replace("М","M",$string);
$string = ereg_replace("И","I",$string);
$string = ereg_replace("Т","T",$string);
$string = ereg_replace("Б","B",$string);
return $string;
}
/* Можете, конечно,
задать любой другой алфавит. По
крайней здесь я использовал тот
алфавит, которым сам обычно
пишу письма транслитом*/
function latrus ($string) #
Теперь задаём функцию
перекодировки транслита в
кириллицу.
{
$string = ereg_replace("zh","ж",$string);
$string = ereg_replace("Zh","Ж",$string);
$string = ereg_replace("yo","ё",$string);
$string = ereg_replace("Yu","Ю",$string);
$string = ereg_replace("Ju","Ю",$string);
$string = ereg_replace("ju","ю",$string);
$string = ereg_replace("yu","ю",$string);
$string = ereg_replace("sh","ш",$string);
$string = ereg_replace("yе","э",$string);
$string = ereg_replace("jа","я",$string);
$string = ereg_replace("yа","я",$string);
$string = ereg_replace("Sh","Ш",$string);
$string = ereg_replace("Ch","Ч",$string);
$string = ereg_replace("ch","ч",$string);
$string = ereg_replace("Yo","Ё",$string);
$string = ereg_replace("Ya","Я",$string);
$string = ereg_replace("Ja","Я",$string);
$string = ereg_replace("Ye","Э",$string);
$string = ereg_replace("i","и",$string);
$string = ereg_replace("'","ь",$string);
$string = ereg_replace("c","ц",$string);
$string = ereg_replace("u","у",$string);
$string = ereg_replace("k","к",$string);
$string = ereg_replace("e","е",$string);
$string = ereg_replace("n","н",$string);
$string = ereg_replace("g","г",$string);
$string = ereg_replace("z","з",$string);
$string = ereg_replace("h","х",$string);
$string = ereg_replace("''","ъ",$string);
$string = ereg_replace("f","ф",$string);
$string = ereg_replace("y","ы",$string);
$string = ereg_replace("v","в",$string);
$string = ereg_replace("a","а",$string);
$string = ereg_replace("p","п",$string);
$string = ereg_replace("r","p",$string);
$string = ereg_replace("o","о",$string);
$string = ereg_replace("l","л",$string);
$string = ereg_replace("d","д",$string);
$string = ereg_replace("s","с",$string);
$string = ereg_replace("m","м",$string);
$string = ereg_replace("t","т",$string);
$string = ereg_replace("b","б",$string);
$string = ereg_replace("I","Й",$string);
$string = ereg_replace("'","Ь",$string);
$string = ereg_replace("C","Ц",$string);
$string = ereg_replace("U","У",$string);
$string = ereg_replace("K","К",$string);
$string = ereg_replace("E","Е",$string);
$string = ereg_replace("N","Н",$string);
$string = ereg_replace("G","Г",$string);
$string = ereg_replace("Z","З",$string);
$string = ereg_replace("H","Х",$string);
$string = ereg_replace("''","Ъ",$string);
$string = ereg_replace("F","Ф",$string);
$string = ereg_replace("Y","Ы",$string);
$string = ereg_replace("V","В",$string);
$string = ereg_replace("A","А",$string);
$string = ereg_replace("P","П",$string);
$string = ereg_replace("R","Р",$string);
$string = ereg_replace("O","О",$string);
$string = ereg_replace("L","Л",$string);
$string = ereg_replace("D","Д",$string);
$string = ereg_replace("S","С",$string);
$string = ereg_replace("M","М",$string);
$string = ereg_replace("I","И",$string);
$string = ereg_replace("T","Т",$string);
$string = ereg_replace("B","Б",$string);
return $string;
}
/*Код
конечно большой,
но что ж
поделаешь,
уж такой у нас
алфавит:) Можно
конечно было использовать вместо
функции ereg_replace
функцию eregi_replace,
чтобы хоть как-то
уменьшить код,
но тогда при
перекодировке текста регистр
символов не сохранялся бы*/
/*Остался
совсем небольшой код с помощью
которого и будет происходить
перекодировка текста.
Итак,
вот он:*/
if ($action == "TRANSLIT") {
if ($translite == "ruslat") {
if ($body == "")
{
echo "А текст-то
где?"; /* Предупреждаем
пользователя на тот случай,
если он не
введёт текст.*/
}
else {
$body = ruslat($body);
echo "$body"; /* Иначе
выводим пользователю уже
перекодированный текст*/
}
}
if ($translite == "latrus"){
if ($body == ""){
echo "А текст-то
где?"; /* Предупреждаем
пользователя на тот случай,
если он не
введёт текст.*/
}
else{
$body = latrus($body);
echo "$body"; /* Иначе
выводим пользователю уже
перекодированный текст*/
}
}
if ($translite == ""){
echo "А перекодировать-то
с чего на что будем?"; /*
Предупреждаем
пользователя на тот случай,
если он не
выбирет с чего на что необходимо
перекодировать.*/
}
}
echo"
</textarea></td></tr>
<tr><td align=center bgcolor=\"#F9F9F9\"><input
type=submit name=action value=TRANSLIT></td></tr>
<table>
"; /* Выводим
нижнюю часть формы с кнопкой,
приводящей в
действие скрипт*/
?>
Внимание: Если версия PHP-интерпретатора
4.0.3 и выше, или в конфигурации PHP
включена директива track_vars, то
вначале данного когда вставьте эти
две строчки: extract($HTTP_GET_VARS);
extract($HTTP_POST_VARS);
Вот вроде бы и всё, как видите сам
скрипт очень даже простой и,
надеюсь, не вызовет у вас
затруднений. Если хотите увидеть
скрипт в действии, то заходите ко
мне на сайт: www.germany.hostmos.ru
|