Пишем перекодировщик translita в кириллицу и обратно на PHP
Случалось ли вам переписываться с русскими, которые
живут за границей и у
которых, соответственно, нет
клавиатуры с кириллицей? Эти люди, обычно, пишут
языком с
интересным названием "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 ==
"") &nbs
p; &nb
sp; &n
bsp; &
nbsp;
 
; &nbs
p; &nb
sp; &n
bsp; &
nbsp;
 
; &nbs
p; &nb
sp;
{
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