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

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

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

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

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

<?php
$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);

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

$text = strtr($text,$a);
}
}
?>

<form method="post">
<textarea name="text" cols="60" rows="10"><?php echo $text; ?></textarea>
<br />
<input type="submit" name="do" value="Конвертировать" />
на
<select name="to">
<option value="c" selected>Кириллица</option>
<option value="t">Транслит</option>
</select>
</form>

Примечание:
в данном примере я взял алфавит транслита с Wikipedia, при жедании вы можете смело менять их значения.

Эта новая версия! Были учтены комментарии.

]]>

Добавить в закладки
Memori БобрДобр Google Яндекс Твиттер del.icio.us Мистер Вонг МоёМесто MyScoop RuSpace Сто закладок

]]>

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

  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. ]]>Tel]]> сказал:
    января 21, 2010 в 02:11

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

  4. ]]>Юрий]]> сказал:
    мая 7, 2010 в 11:02

    Это просто ужасно, если ты уж и используешь PHP так пользуйся всеми его преимуществами. Если все так будут писать скрипты файлы с пыхами будут Теребайтами весить. Советую почитать про array() и strtr(), жить станет легче.

  5. ]]>Admin]]> сказал:
    мая 7, 2010 в 19:42

    Исправил.

  6. ]]>Юрий]]> сказал:
    мая 25, 2010 в 06:40

    function ecode($string)

    {

    $s = array(“A” =>”1″, “B”=>”2″);

    return strtr($string, $s);

    }

  7. ]]>Юрий]]> сказал:
    мая 25, 2010 в 06:45

    if (!emptyempty($text) && !emptyempty($to)) // проверка на не пустоту

    вместо emptyempty() лучше уж написать abrakadabra()

  8. ]]>Admin]]> сказал:
    мая 25, 2010 в 10:00

    2Юрий, спасибо, исправил
    а то что emptyempty, это вина плагина подсветки, другой наверно поставлю

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