Транслитерация

10 Июл 2007

Срочно понадобился крипт для превращения русского текста в транслит (ГОСТ). Вот, что вышло, может кому пригодится.

<?php
function transliterate($str) {
$str=strtr($str,"абвгдезиклмнопрстуфцъыь",
"abvgdeziklmnoprstufс\"y'");
$str=strtr($str,"АБВГДЕЗИКЛМНОПРСТУФЦЪЫЬ",
"ABVGDEZIKLMNOPRSTUFС\"Y'");
$str=strtr($str,
array(
"э"=>"eh", "х"=>"kh", "й"=>"jj", "ё"=>"jo", "ж"=>"zh", "ч"=>"ch", "ш"=>"sh", "щ"=>"shh", "ю"=>"yu", "я"=>"ya", "Э"=>"Eh", "Х"=>"Kh", "Й"=>"Jj", "Ё"=>"Jo", "Ж"=>"ZH", "Ч"=>"CH", "Ш"=>"SH", "Щ"=>"SHH", "Ю"=>"YU", "Я"=>"YA", "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)
);
return $str;
}
?>

Кстати, ГОСТ или ISO по транслитерации можно найти по этой ссылке.






 

dmitrey     .

Написано 10 июля 2007 года в 18:51


А не быстрее ли будет обойтись одним вызовом последней функции (с двумя аргументами которая). Просто ввести туда все однобуквенные транслитерации и обойтись только вызовом ее одной. По идее должно быть быстрее. Да и логичнее, если честно

 

Жилинcкий Владимир     .

Написано 11 июля 2007 года в 09:02


Да в принципе на функции такого масштаба, я бы сказал, что особой разницы нет. Просто так сразц чётко видно, что сначала идут однобуквенные, а потом многобуквенные замены. И если функцию захочется инвертировать, то эту будет проще =)

 

iobit     .

Написано 11 июля 2007 года в 18:59


Немного лирики, но вот именно такие вещи в PHP, когда существует 10 функцией с помощью которых можно сделать одно и тоже, как-то сбивает с толку.

 

Жилинcкий Владимир     .

Написано 12 июля 2007 года в 11:37


Да, это почти везде так =)
У меня в ЖЖ где-то болталась задачка по программированию (язык любой), которая решается как минимум 10 способами и выбранный метод характеризует тебя как программиста =)

 

Сергей Третьяк     .

Написано 12 июля 2007 года в 16:09


Ja wsegda wystupal za to, cztoby otkazacca ot kirillicy, no edinomyszlennikow tak i ne naszol. :)

 

Жилинcкий Владимир     .

Написано 12 июля 2007 года в 16:17


А ты пишешь не по ГОСТу просто… :-)

 

Сергей Третьяк     .

Написано 12 июля 2007 года в 16:19


Koneczno. Prosto GOST nemnogo usczerbnyj, mne kazsecca, ne otrazsaet sowremennosti. :)

 

Жилинcкий Владимир     .

Написано 12 июля 2007 года в 16:30


Zato GOST mozhno avtomatom transliterirovat` v kirilicu :-P

 

Сергей Третьяк     .

Написано 12 июля 2007 года в 16:41


Menja smutilo samo nazwanie GOSTa — ГОСТ 16876-71 Правила транслитерации букв кирилловского алфавита буквами латинского алфавита. Poczemu kirillowskogo-to? :) W 1971 godu, nawernoe, “kirillica” bylo slowom rugateļnym. Ja znaju, czto w belorusskom jazyke jesţ wariant s latinicej, poczemu by ne sdelaţ to zse samoje s russkim jazykom?

 

Жилинcкий Владимир     .

Написано 12 июля 2007 года в 16:50


Был. Тогда это была ещё не беларусь, а ВКЛ, если я не “запямятавал” :-)

 

Сергей Третьяк     .

Написано 12 июля 2007 года в 16:53


Tipa, Welikoe Knjazsestwo Litowskoe? :)

 

Жилинcкий Владимир     .

Написано 12 июля 2007 года в 16:57


Вялікае Княства Літоўскае or Grand Duchy of Litva :-)

 

Сергей     .

Написано 18 июля 2007 года в 15:29


Мечтаю о такой же функции, но для юникода и для всех языков сразу :)
Чтобы и “Літоўскае” и “Ελληνικά” переводило в ascii 7bit

В гугле можно найти какие-то таблицы транлитерации, например здесь http://www.uconv.com/translit.htm – и украинский, и грузинский и даже санскрит.

Но хочется готовую библиотеку с данными. Может кто встречал ?

 

Эрт     .

Написано 14 января 2008 года в 15:42


Сенкс за готовую функцию.

В таблице перекодировки ошибки – буквы Ц и ц.

 

транслитерация по ГОСТ 7.79 и ISO 9     .

Написано 10 апреля 2008 года в 04:54


Владимир, отличный код, без лишнего. Видел ещё такую же функцию реализованную через JavaScript на http://translit.us/ Там надо в правом клавишном блоке выбрать соответствующую раскладку.

 

Жилинcкий Владимир     .

Написано 10 апреля 2008 года в 08:08


Хм… Тоже вариант =)

 

Prestige     .

Написано 30 июня 2008 года в 21:22


Тема старовата, но! Помоему логичнее сначала сделать “многобуквенные замены”, а потом “однобуквенные”.

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

You must be logged in to post a comment.

© 2007-2010 Блог интернет-разработчика, автор — Zhilinsky.ru.
При использовании информации ссылка на источник обязательна.