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('Съешь же ещё этих мягких французских булок, да выпей чаю.');
Результат
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.');
Результат
Съешь же ещё этих мягких французских булок, да выпей чаю.
* Источник данных http://docs.cntd.ru/document/1200026226