В ИНТЕРНЕТЕ

 Процессор Athlon XP3200+
 Битва против зажравшихся рунетовских монополистов
 Куваев добил Масяню
 Обнаружена самая древняя планета
 Автобусы, не нуждающиеся в водителях
 Российские ученые изобрели уникальный препарат
 Космические лучи вызывают ледниковые периоды
 Кадр дня: компьютерный корпус в виде космического крейсера
 Сотовый телефон с двумя фотокамерами
 Из рыб сделали лампы
 Linux-хакеры взломали Xbox
 Компьютер научили человеческому распознаванию лиц
 Yamaha: мотоцикл на топливных элементах
 Rambler: Спамерам осталось два месяца

 WEB-СТРОИТЕЛЬСТВО

 Убийство спама в The Bat!
 Time Out или время загрузки сайта
 Что такое ip адрес и как его использовать
 Как правильно регистрироваться в западных каталогах
 Система регистрации на PHP
 Интернет - сплошная грязь
 Что мы хотим сделать?
 Статистика пользователей РУнета: июль 2003 года
 Как защитить свой контент от плагиата?
 Пишем перекодировщик translita в кириллицу и обратно на PHP
 Установка и настройка PHP
 Настройка small HTTP Server: практическое руководство
 Copy - Paste: Как защитить от копирования текст на вашем сайте
 Зачем нужна регистрация в каталогах через 1PS.RU

 ПРОГРАММЫ

 MultiRes 1.42
 GetRight 5.0.2
 NetView 2.78
 Trace The Matrix 1.2
 PhotoGift 1.1
 SP-Чат 2.6
 RAR Password Recovery 1.0b
 FVords 1.5.11
 PowerStrip 3.43 (Multilanguage)
 GoldWave 5.04
 Строчка 1.1.15
 Apache 2.0.47
 PC4ever 5
 Nero Burning Rom 5.5.10.42
 Wmaster #6
 OptiPerl 4.1 build 47
 Atomic Cannon 1.22
 Sandra Standard MAX3! 9.73

 УГОЛОК ГЕЙМЕРА

 Новая информация о Doom III
 Официальный сайт Max Payne 2
 Для зрения полезны лишь самые жестокие компьютерные игры
 В Таиланде запретили играть на компьютере ночью
 Несколько ключевых разработчиков покинули Blizzard
 3 вопроса портала ProtoPlex разработчику игр Nival Interactive
 Ах этот Вайс...
 Venom: Кодовое имя "Прорыв"
 BloodRayne
 Enclave
 Seadogs II Preview
 Half Life 2: возвращение Гордона Фримена
 Дальнобойщики 2
 Grom
 Ил-2: Забытые Сражения
 Freelancer: свободный копейщик
 Microsoft Train Simulator
 Stronghold: Crusader
 Elasto Mania

 РАЗНОЕ

 «Би Лайн» почти решил проблему с «восьмеркой»
 Упругая "стенка" защитит небоскреб от самолета
 Белый тигр с голубыми глазами
 Элизиум: новый компьютерный фильм
 Разделение доступа в интернет из локальной сети


Пишем перекодировщик translita в кириллицу и обратно на PHP

Левин Константин
ritmon@yandex.ru
http://www.ritmon.narod.ru
Июнь 09, 2003
[05:10]

Случалось ли вам переписываться с русскими, которые живут за границей и у которых, соответственно, нет клавиатуры с кириллицей? Эти люди, обычно, пишут языком с интересным названием "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


Авторы: Томсон Л., Веллинг Л. ISBN: 966-7393-98-4 Страниц: 672 Издатель: ДиаСофт Год выпуска: 2002 Цена: 321.02 руб Обращений: 300+
Книга Разработка Web-приложений на РНР и MySQL представляет собой всеобъемлющее руководство по совместному применению РНР и MySQL для разработки высокоэффективных и интерактивных Web-сайтов с динамическим содержимым.Несомненным достоинством книги является ее ориентация на решение реальных бизнес-задач, что воплощено во множестве типовых примеров, столь часто встречающихся при повседневной раз...
Вся информация, содержащаяся в данном журнале, является интеллектуальной собственностью своих законных авторов. При перепечатке материалов из журнала для соблюдения закона об авторских правах необходимо указывать имена и все ссылки авторов. Также необходимо ставить видимую ссылку на Российский мультипортал ProtoPlex <HTTP://PROTOPLEX.RU>