PHP: Транслит русских слов в английские и обратно
Во время создания сайтов, периодически сталкиваюсь с необходимостью делать транслит русских слов в латиницу. Ниже примеры используемых мной функций...
Во время создания сайтов, периодически сталкиваюсь с необходимостью делать транслит русских слов в латиницу.
Ниже примеры используемых мной функций:
Из Русского в Латиницу
function ru2Lat($string) { $rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я'); $lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA'); $string = str_replace($rus,$lat,$string); $string = strtr($string, "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ", "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh_i_e"); return($string); }
Обратно - из Латиницы в Русский язык
function Lat2ru($string) { $rus = array('ё','ж','ц','ч','ш','щ','ю','я','Ё','Ж','Ц','Ч','Ш','Щ','Ю','Я'); $lat = array('yo','zh','tc','ch','sh','sh','yu','ya','YO','ZH','TC','CH','SH','SH','YU','YA'); $string = str_replace($lat,$rus,$string); $string = strtr($string, "ABVGDEZIJKLMNOPRSTUFH_I_Eabvgdezijklmnoprstufh_i_e", "АБВГДЕЗИЙКЛМНОПРСТУФХЪЫЬЭабвгдезийклмнопрстуфхъыьэ"); return($string); }
или такой вариант
function Lat2ru($string){ $cyr=array( "Щ", "Ш", "Ч","Ц", "Ю", "Я", "Ж","А","Б","В", "Г","Д","Е","Ё","З","И","Й","К","Л","М","Н", "О","П","Р","С","Т","У","Ф","Х","Ь","Ы","Ъ", "Э","Є", "Ї","І", "щ", "ш", "ч","ц", "ю", "я", "ж","а","б","в", "г","д","е","ё","з","и","й","к","л","м","н", "о","п","р","с","т","у","ф","х","ь","ы","ъ", "э","є", "ї","і" ); $lat=array( "Shch","Sh","Ch","C","Yu","Ya","J","A","B","V", "G","D","E","E","Z","I","y","K","L","M","N", "O","P","R","S","T","U","F","H","", "Y","" ,"E","E","Yi","I", "shch","sh","ch","c","Yu","Ya","j","a","b","v", "g","d","e","e","z","i","y","k","l","m","n", "o","p","r","s","t","u","f","h", "", "y","" ,"e","e","yi","i" ); $string = str_replace($lat,$cyr,$string); $string = str_replace("_"," ",$string); return($string); }
Согласно ГОСТам:
Для генерации логина лучше использовать эту функцию:
function RusToLat($source=false) { if ($source) { $rus = [ 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' ]; $lat = [ 'A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Ch', 'Sh', 'Shch', 'Y', 'Y', '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', 'h', 'c', 'ch', 'sh', 'shch', 'y', 'y', 'y', 'e', 'yu', 'ya' ]; return str_replace($rus, $lat, $source); } }
В соответствии с ГОСТ 7.79-2000 схема Б:
function RusToLat($source=false) { if ($source) { $rus = [ 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' ]; $lat = [ 'A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Zh', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', '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', 'h', 'c', 'ch', 'sh', 'shh', '``', 'y'', '`', 'e`', 'yu', 'ya' ]; return str_replace($rus, $lat, $source); } }
В соответствии с ISO 9 – 1995:
function RusToLat($source=false) { if ($source) { $rus = [ 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я' ]; $lat = [ 'A', 'B', 'V', 'G', 'D', 'E', 'Yo', 'Ž', 'Z', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'R', 'S', 'T', 'U', 'F', 'H', 'C', 'Č', 'Š', 'Ŝ', '"', 'Y', ''', 'È', 'Û', 'Â', 'a', 'b', 'v', 'g', 'd', 'e', 'yo', 'ž', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'č', 'š', 'ŝ', '"', 'y', ''', 'è', 'û', 'â' ]; return str_replace($rus, $lat, $source); } }