Перекодировщик (конвертер, переводчик) транслита в кириллицу и наоборот
Категория PHP
Случалось ли вам переписываться с русскими, которые живут за границей и у которых, соответственно, нет клавиатуры с кириллицей? Эти люди, обычно, пишут языком с интересным названием “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 комментариев по “Перекодировщик (конвертер, переводчик) транслита в кириллицу и наоборот”
-
]]>Admin]]> сказал:
июля 12, 2009 в 22:50Сразу скажу скрипт очень легкий. Отправляем текст который хотим конвертировать, наша функция меняет определенные символы на кириллические или же на латинские с помощью функции ereg_replace.
-
]]>BelStudent]]> сказал:
декабря 12, 2009 в 04:26Чел, ты меня извини, но ты сам ещё новичок в этом деле.
Просмотрел секунд 30 код и вот сразу куча замечаний:
1) вместо замены ereg_replace, нужно использовать str_replace (существенно прибавит скорости на длинных текстах, да и вообще не учи детей плохому… стилю)
2) соответсвие: русский символ -> транслит эквивалент, нужно вынести в отдельный массив, а замену выполнять в цикле, тогда и код существенно уменьшится
3) выноси html код в отдельный файл, а php код в отдельный а потом “инклудь”
Чел, это замечания так… поверхностные. Скорее всего ты с PHP знаком месяц, другой.
Короче, работай над собой. -
]]>Tel]]> сказал:
января 21, 2010 в 02:11BelStudent, вот объясни мне нафига форму выносить в отдельный файл? это бесполезно в этом случае
-
]]>Юрий]]> сказал:
мая 7, 2010 в 11:02Это просто ужасно, если ты уж и используешь PHP так пользуйся всеми его преимуществами. Если все так будут писать скрипты файлы с пыхами будут Теребайтами весить. Советую почитать про array() и strtr(), жить станет легче.
-
]]>Admin]]> сказал:
мая 7, 2010 в 19:42Исправил.
-
]]>Юрий]]> сказал:
мая 25, 2010 в 06:40function ecode($string)
{
$s = array(“A” =>”1″, “B”=>”2″);
return strtr($string, $s);
}
-
]]>Юрий]]> сказал:
мая 25, 2010 в 06:45if (!emptyempty($text) && !emptyempty($to)) // проверка на не пустоту
вместо emptyempty() лучше уж написать abrakadabra()
-
]]>Admin]]> сказал:
мая 25, 2010 в 10:002Юрий, спасибо, исправил
а то что emptyempty, это вина плагина подсветки, другой наверно поставлю
Оставьте комментарий: