Перекодировщик (конвертер, переводчик) транслита в кириллицу и наоборот

Случалось ли вам переписываться с русскими, которые живут за границей и у которых, соответственно, нет клавиатуры с кириллицей? Эти люди, обычно, пишут языком с интересным названием "translit" (или транслитерация, выражаясь по-русски). Кто в танке, поясняю – это русский текст, набранный латинскими буквами. Его, естественно, очень трудно читать непривыкшему человеку… Специально для таких людей сегодня мы напишем скрипт конвертера / перекодировщика / переводчика из транслита в кириллицу, и с кириллицы в транслит

Скрипт в действии можете увидеть на странице translittorus.php

Сразу скажу скрипт очень легкий. Отправляем текст который хотим конвертировать, наша функция меняет определенные символы на кириллические или же на латинские с помощью функции ereg_replace.

Вот код скрипта с комментариями, если же возникнут вопросы оставляйте комменты:

function RusToLat($text) //описание функции перевода русского текста в транслит
{
$text = ereg_replace("а","a",$text);
$text = ereg_replace("б","b",$text);
$text = ereg_replace("в","v",$text);
$text = ereg_replace("г","g",$text);
$text = ereg_replace("д","d",$text);
$text = ereg_replace("е","e",$text);
$text = ereg_replace("ё","yo",$text);
$text = ereg_replace("ж","zh",$text);
$text = ereg_replace("з","z",$text);
$text = ereg_replace("и","i",$text);
$text = ereg_replace("й","i",$text);
$text = ereg_replace("к","k",$text);
$text = ereg_replace("л","l",$text);
$text = ereg_replace("м","m",$text);
$text = ereg_replace("н","n",$text);
$text = ereg_replace("о","o",$text);
$text = ereg_replace("п","p",$text);
$text = ereg_replace("р","r",$text);
$text = ereg_replace("с","s",$text);
$text = ereg_replace("т","t",$text);
$text = ereg_replace("у","u",$text);
$text = ereg_replace("ф","f",$text);
$text = ereg_replace("х","kh",$text);
$text = ereg_replace("ц","c",$text);
$text = ereg_replace("ч","ch",$text);
$text = ereg_replace("ш","sh",$text);
$text = ereg_replace("щ","sh",$text);
$text = ereg_replace("ъ","'",$text);
$text = ereg_replace("ы","y",$text);
$text = ereg_replace("ь","'",$text);
$text = ereg_replace("э","e",$text);
$text = ereg_replace("ю","yu",$text);
$text = ereg_replace("я","ya",$text);
$text = ereg_replace("А","A",$text);
$text = ereg_replace("Б","B",$text);
$text = ereg_replace("В","V",$text);
$text = ereg_replace("Г","G",$text);
$text = ereg_replace("Д","D",$text);
$text = ereg_replace("Е","E",$text);
$text = ereg_replace("Ё","YO",$text);
$text = ereg_replace("Ж","ZH",$text);
$text = ereg_replace("З","Z",$text);
$text = ereg_replace("И","I",$text);
$text = ereg_replace("Й","I",$text);
$text = ereg_replace("К","K",$text);
$text = ereg_replace("Л","L",$text);
$text = ereg_replace("М","M",$text);
$text = ereg_replace("Н","N",$text);
$text = ereg_replace("О","O",$text);
$text = ereg_replace("П","P",$text);
$text = ereg_replace("Р","R",$text);
$text = ereg_replace("С","S",$text);
$text = ereg_replace("Т","T",$text);
$text = ereg_replace("У","U",$text);
$text = ereg_replace("Ф","F",$text);
$text = ereg_replace("Х","KH",$text);
$text = ereg_replace("Ц","C",$text);
$text = ereg_replace("Ч","CH",$text);
$text = ereg_replace("Ш","SH",$text);
$text = ereg_replace("Щ","SH",$text);
$text = ereg_replace("Ъ","'",$text);
$text = ereg_replace("Ы","Y",$text);
$text = ereg_replace("Ь","'",$text);
$text = ereg_replace("Э","E",$text);
$text = ereg_replace("Ю","YU",$text);
$text = ereg_replace("Я","YA",$text);
return $text;
}

function LatToRus($text) //описание функции перевода транслита на русский, тут немножко изменен порядок букв для удобства и более точного перевода.
{
$text = ereg_replace("ya","я",$text);
$text = ereg_replace("yo","ё",$text);
$text = ereg_replace("zh","ж",$text);
$text = ereg_replace("kh","х",$text);
$text = ereg_replace("ch","ч",$text);
$text = ereg_replace("sh","ш",$text);
$text = ereg_replace("yu","ю",$text);
$text = ereg_replace("a","а",$text);
$text = ereg_replace("b","б",$text);
$text = ereg_replace("v","в",$text);
$text = ereg_replace("g","г",$text);
$text = ereg_replace("d","д",$text);
$text = ereg_replace("e","е",$text);
$text = ereg_replace("z","з",$text);
$text = ereg_replace("i","и",$text);
$text = ereg_replace("k","к",$text);
$text = ereg_replace("l","л",$text);
$text = ereg_replace("m","м",$text);
$text = ereg_replace("n","н",$text);
$text = ereg_replace("o","о",$text);
$text = ereg_replace("p","п",$text);
$text = ereg_replace("r","р",$text);
$text = ereg_replace("s","с",$text);
$text = ereg_replace("t","т",$text);
$text = ereg_replace("u","у",$text);
$text = ereg_replace("f","ф",$text);
$text = ereg_replace("c","ц",$text);
$text = ereg_replace("y","ы",$text);
$text = ereg_replace("'","ь",$text);
$text = ereg_replace("e","э",$text);
$text = ereg_replace("YA","Я",$text);
$text = ereg_replace("CH","Ч",$text);
$text = ereg_replace("SH","Ш",$text);
$text = ereg_replace("YU","Ю",$text);
$text = ereg_replace("YO","Ё",$text);
$text = ereg_replace("ZH","Ж",$text);
$text = ereg_replace("KH","Х",$text);
$text = ereg_replace("A","А",$text);
$text = ereg_replace("B","Б",$text);
$text = ereg_replace("V","В",$text);
$text = ereg_replace("G","Г",$text);
$text = ereg_replace("D","Д",$text);
$text = ereg_replace("E","Е",$text);
$text = ereg_replace("Z","З",$text);
$text = ereg_replace("I","И",$text);
$text = ereg_replace("I","Й",$text);
$text = ereg_replace("K","К",$text);
$text = ereg_replace("L","Л",$text);
$text = ereg_replace("M","М",$text);
$text = ereg_replace("N","Н",$text);
$text = ereg_replace("O","О",$text);
$text = ereg_replace("P","П",$text);
$text = ereg_replace("R","Р",$text);
$text = ereg_replace("S","С",$text);
$text = ereg_replace("T","Т",$text);
$text = ereg_replace("U","У",$text);
$text = ereg_replace("F","Ф",$text);
$text = ereg_replace("C","Ц",$text);
$text = ereg_replace("Y","Ы",$text);
$text = ereg_replace("'","Ь",$text);
$text = ereg_replace("E","Э",$text);

return $text;
}

$text="Введите текст для конвертирования"; // текст по умолчанию
if (isset($_POST['do'])){ // проверка нажата ли была кнопка "Конвертировать"
if (isset($_POST['text']))$text=$_POST['text']; // запись в переменную текста для перевода
if (isset($_POST['to']))$to=$_POST['to']; //запись в переменную перевода направления
if (!empty($text) && !empty($to)) // проверка на не пустоту
{
$text = stripslashes($text);
$text = htmlspecialchars($text);
$to = stripslashes($to);
$to = htmlspecialchars($to);
$to=="t"?$text=RusToLat($text):$text=LatToRus($text); // определение направления перевода, если надо перевести в русский текст транслит, вызвается функция RusToLat,если же в обратную LatToRus
}
}

//вывод формы
echo "






на

";
?>

Примечание:
1) в данном примере я взял алфавит транслита с Wikipedia, при жедании вы можете смело менять их значения.
2) если вы хотите уменьшить код можете использовать вместо функции ereg_replace функцию eregi_replace, но тогда при перекодировке текста регистр символов не сохраняется.

На этом все. Желаю успехов!

]]>

Добавить в закладки

]]>

3 комментариев по “Перекодировщик (конвертер, переводчик) транслита в кириллицу и наоборот”

  1. ]]> Admin ]]> сказал:
    июля 12, 2009 в 22:50

    Сразу скажу скрипт очень легкий. Отправляем текст который хотим конвертировать, наша функция меняет определенные символы на кириллические или же на латинские с помощью функции ereg_replace.

  2. ]]> BelStudent ]]> сказал:
    декабря 12, 2009 в 04:26

    Чел, ты меня извини, но ты сам ещё новичок в этом деле.
    Просмотрел секунд 30 код и вот сразу куча замечаний:
    1) вместо замены ereg_replace, нужно использовать str_replace (существенно прибавит скорости на длинных текстах, да и вообще не учи детей плохому… стилю)
    2) соответсвие: русский символ -> транслит эквивалент, нужно вынести в отдельный массив, а замену выполнять в цикле, тогда и код существенно уменьшится
    3) выноси html код в отдельный файл, а php код в отдельный а потом “инклудь”
    Чел, это замечания так… поверхностные. Скорее всего ты с PHP знаком месяц, другой.
    Короче, работай над собой.

  3. ]]> ]]> сказал:
    января 21, 2010 в 02:11

    BelStudent, вот объясни мне нафига форму выносить в отдельный файл? это бесполезно в этом случае

Оставьте комментарий: