Ещё раз о транслите
Конечно, делать вот такой перевод кириллицы в транслит, какого мне когда-то хватало, сегодня уже не нужно - просто потому, что при традиционном способе нет простого взаимно однозначного преобразования символов "туда" и "обратно", например, если "щ" это "sch", но "ch" при этом ещё и "ч".
На этот случай, чтобы не изобретать велосипед, уже существует ГОСТ 7.79-2000 на транслитерацию, берём его и пользуемся.
Вот здесь можно почитать побольше занудства про умляуты и большие буквы и получить более "мощный" код, но если нужны только "классическая" латиница и русская кириллица, хватит и простого класса, листинг которого с примером вызова приложен ниже.
<?php class Translit { public $cyr2lat_replacements = 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" ); public function cyr2lat ($text) { return strtr ($text,$this->cyr2lat_replacements); } public function lat2cyr ($text) { return strtr ($text,array_flip($this->cyr2lat_replacements)); } } $t = new Translit(); $text_cyr = "Съешь же ещё этих мягких французских булок, да выпей чаю"; $text_lat = $t->cyr2lat($text_cyr); echo $text_lat; $text_cyr = $t->lat2cyr($text_lat); echo '<br>'.$text_cyr; ?>
Тестировался скрипт в Юникоде (UTF-8), вывел вот что:
S``esh` zhe eshhyo e`tix myagkix franczuzskix bulok, da vy'pej chayu Съешь же ещё этих мягких французских булок, да выпей чаю
Также для удобства добавлю табличку транслитерации символов кириллицы по ГОСТ 7.79-2000 (Система Б).
а | a |
б | b |
в | v |
г | g |
д | d |
е | e |
ё | yo |
ж | zh |
з | z |
и | i, i' |
й | j |
к | k |
л | l |
м | m |
н | n |
о | o |
п | p |
р | r |
с | s |
т | t |
у | u |
ф | f |
х | x |
ц | cz, c |
ч | ch |
ш | sh |
щ | shh |
ъ | `` |
ы | y' |
ь | ` |
э | e` |
ю | yu |
я | ya |
05.12.2018, 16:34 [1675 просмотров]