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

PHP функции для транслита текста на русском языке по ГОСТ 7.79-2000 (ИСО 9-95) система «Б»*.

Кириллическая Латинская Кириллическая Латинская
А A а a
Б B б b
В V в v
Г G г g
Д D д d
Е E е e
Ё Yo ё yo
Ж Zh ж zh
З Z з z
И I и i
Й J й j
К K к k
Л L л l
М M м m
Н N н n
О O о o
П P п p
Р R р r
С S с s
Т T т t
У U у u
Ф F ф f
Х X х x
Ц Cz ц cz
Ч Ch ч ch
Ш Sh ш sh
Щ Shh щ shh
Ъ `` ъ ``
Ы Y` ы y`
Ь ` ь `
Э E` э e`
Ю Yu ю yu
Я Ya я ya
function translit($value)
{
	$converter = array(
		'А' => 'A',    'Б' => 'B',    'В' => 'V',    'Г' => 'G',    'Д' => 'D',
		'Е' => 'E',    'Ё' => 'Yo',   'Ж' => 'Zh',   'З' => 'Z',    'И' => 'I',
		'Й' => 'J',    'К' => 'K',    'Л' => 'L',    'М' => 'M',    'Н' => 'N',
		'О' => 'O',    'П' => 'P',    'Р' => 'R',    'С' => 'S',    'Т' => 'T',
		'У' => 'U',    'Ф' => 'F',    'Х' => 'X',    'Ц' => 'Cz',   'Ч' => 'Ch',
		'Ш' => 'Sh',   'Щ' => 'Shh',  'Ъ' => '``',   'Ы' => 'Y`',   'Ь' => '`',
		'Э' => 'E`',   'Ю' => 'Yu',   'Я' => 'Ya',   

		'а' => 'a',    'б' => 'b',    'в' => 'v',    'г' => 'g',    'д' => 'd',
		'е' => 'e',    'ё' => 'yo',   'ж' => 'zh',   'з' => 'z',    'и' => 'i',
		'й' => 'j',    'к' => 'k',    'л' => 'l',    'м' => 'm',    'н' => 'n',
		'о' => 'o',    'п' => 'p',    'р' => 'r',    'с' => 's',    'т' => 't',
		'у' => 'u',    'ф' => 'f',    'х' => 'x',    'ц' => 'cz',   'ч' => 'ch',
		'ш' => 'sh',   'щ' => 'shh',  'ъ' => '``',   'ы' => 'y`',   'ь' => '`',
		'э' => 'e`',   'ю' => 'yu',   'я' => 'ya'
	);

	$value = strtr($value, $converter);
	return $value;
}

echo translit('Съешь же ещё этих мягких французских булок, да выпей чаю.');
PHP

Результат

S``esh` zhe eshhyo e`tix myagkix franczuzskix bulok, da vy`pej chayu.

Обратный перевод текста

Ретранслитерация производится в 3 этапа:

Латинская Кириллическая Латинская Кириллическая
Трехбуквенные сочетания
Shh Щ shh щ
Двухбуквенные сочетания
Yo Ё yo ё
Zh Ж zh ж
Cz Ц cz ц
Ch Ч ch ч
Sh Ш sh ш
`` Ъ `` ъ
Y` Ы y` ы
E` Э e` э
Yu Ю yu ю
Ya Я ya я
Однобуквенные соответствия
A А a а
B Б b б
V В v в
G Г g г
D Д d д
E Е e е
Z З z з
I И i и
J Й j й
K К k к
L Л l л
M М m м
N Н n н
O О o о
P П p п
R Р r р
S С s с
T Т t т
U У u у
F Ф f ф
X Х x х
` Ь ` ь
function untranslit($value)
{
	$step_1 = array(
		'SHH' => 'Щ',   'Shh' => 'Щ',   'shh' => 'щ'
	);

	$value = strtr($value, $step_1);
	
	$step_2 = array(
		'YO' => 'Ё',    'ZH' => 'Ж',    'CZ' => 'Ц',    'CH' => 'Ч',    'SH' => 'Ш',
		'Y`' => 'Ы',    'E`' => 'Э',    'YU' => 'Ю',    'YA' => 'Я',	
		
		'Yo' => 'Ё',    'Zh' => 'Ж',    'Cz' => 'Ц',    'Ch' => 'Ч',    'Sh' => 'Ш',
		'Yu' => 'Ю',    'Ya' => 'Я',

		'yo' => 'ё',    'zh' => 'ж',    'cz' => 'ц',    'ch' => 'ч',    'sh' => 'ш',
		'y`' => 'ы',    'e`' => 'э',    'yu' => 'ю',    'ya' => 'я',    '``' => 'ъ',
	);

	$value = strtr($value, $step_2);

	$step_3 = array(	
		'A' => 'А',     'B' => 'Б',     'V' => 'В',     'G' => 'Г',     'D' => 'Д',
		'E' => 'Е',     'Z' => 'З',     'I' => 'И',     'J' => 'Й',     'K' => 'К',
		'L' => 'Л',     'M' => 'М',     'N' => 'Н',     'O' => 'О',     'P' => 'П',
		'R' => 'Р',     'S' => 'С',     'T' => 'Т',     'U' => 'У',     'F' => 'Ф',
		'X' => 'Х',

		'a' => 'а',     'b' => 'б',     'v' => 'в',     'g' => 'г',     'd' => 'д',
		'e' => 'е',     'z' => 'з',     'i' => 'и',     'j' => 'й',     'k' => 'к',
		'l' => 'л',     'm' => 'м',     'n' => 'н',     'o' => 'о',     'p' => 'п',
		'r' => 'р',     's' => 'с',     't' => 'т',     'u' => 'у',     'f' => 'ф',
		'x' => 'х',     '`' => 'ь',
	);

	$value = strtr($value, $step_3);
	return $value;
}

echo untranslit('S``esh` zhe eshhyo e`tix myagkix franczuzskix bulok, da vy`pej chayu.');
PHP

Результат

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

* Источник данных http://docs.cntd.ru/document/1200026226

28.03.2019, обновлено 10.12.2020
5382
Предыдущая запись PHP транслит
Следующая запись Замена раскладки на PHP

Комментарии

, чтобы добавить комментарий.

Другие публикации

Замена раскладки на PHP
PHP функции для исправление неправильной раскладки клавиатуры в тексте и использование их в поиске по сайту.
11508
+11
Генерация случайных буквенно-цифровых кодов в PHP
Несколько примеров, как сгенерировать случайные последовательности численных и буквенных строк заданной длины и...
12424
+4
Таблица символов ASCII + Windows 1251
Список из 256 символов и их коды в ASCII.
988348
+58
Генерация паролей в PHP
В PHP есть несколько функций для генерации случайного числа, это rand(), mt_rand() и random_int().
24508
+11
Коды клавиш клавиатуры для JQuery событий keydown, keyup и keypress
Список кодов клавиш стандартной клавиатуры на Windows и MacOS...
62301
+2
Алфавиты в массивах и строках
Объявленные PHP-массивы с латинским и русским алфавитом.
17045
+12