PHP логотип
PHP логотип

Транслітерація — це передача слів або текстів з однієї писемності іншою, збереженням вимови або наближеного вигляду оригіналу. Вона використовується, коли потрібно записати слова мовою, яка має іншу абетку.

Види транслітерації:

  1. Наукова (ISO, BGN/PCGN) – використовується для точного відтворення іншими мовами (напр. ГОСТ 7.79-2000).
  2. Офіційна (паспортна) – застосовується для документів (напр. українська система транслітерації Кабміну).
  3. Приблизна (фонетична) – орієнтована на вимову (напр. Kyiv vs. Kiev).

Функція спрощеної транслітерації

Код, що наведено нижче, виконує транслітерацію кириличних символів української та російської мови у латиницю, схожу на неофіційну (спрощену) транслітерацію.

Функція translitIt() отримує як вхідний параметр рядок, транслітерує кириличні символи, замінює символи та пробіли на знак підкреслення “_”, переводить все в нижній регістр (рядкові символи) і повертає коректний рядок латиницею. Можна використовувати для генерування посилань, або перетворення назв файлів, що завантажуються.

function translitIt($str)
{
    $tr = array(
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
        "Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I",
        "Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
        "О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
        "У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
        "Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"",
        "Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
        "в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
        "з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
        "м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
        "с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
        "ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
        "ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
		"Ё"=>"E","Є"=>"E","Ї"=>"YI","ё"=>"e","є"=>"e","ї"=>"yi",
        " "=> "_", "/"=> "_"
    );
	if (preg_match('/[^A-Za-z0-9_\-]/', $str)) {
		$str = strtr($str,$tr);
		$str = preg_replace('/[^A-Za-z0-9_\-.]/', '', $str);
	}
    return $str;
}

Офіційна транслітерація українських текстів

В Україні офіційна транслітерація регулюється постановою Кабміну № 55 від 2010 року, що визначає правила написання українських імен і географічних назв латиницею. Нижче наведений код функції translitUkr() використовує офіційні правила транслітерації (КМУ № 55), перетворює пробіли на _ (зручно для URL), видаляє всі небуквено-цифрові символи (окрім _, -, .), враховує відмінності у транслітерації на початку слів (наприклад, Є → Ye, Ї → Yi).

function translitUkr($str) {
    $tr = [
        "А" => "A", "Б" => "B", "В" => "V", "Г" => "H", "Ґ" => "G",
        "Д" => "D", "Е" => "E", "Є" => "Ye", "Ж" => "Zh", "З" => "Z",
        "И" => "Y", "І" => "I", "Ї" => "Yi", "Й" => "Y", "К" => "K",
        "Л" => "L", "М" => "M", "Н" => "N", "О" => "O", "П" => "P",
        "Р" => "R", "С" => "S", "Т" => "T", "У" => "U", "Ф" => "F",
        "Х" => "Kh", "Ц" => "Ts", "Ч" => "Ch", "Ш" => "Sh", "Щ" => "Shch",
        "Ь" => "", "Ю" => "Yu", "Я" => "Ya",

        "а" => "a", "б" => "b", "в" => "v", "г" => "h", "ґ" => "g",
        "д" => "d", "е" => "e", "є" => "ie", "ж" => "zh", "з" => "z",
        "и" => "y", "і" => "i", "ї" => "i", "й" => "i", "к" => "k",
        "л" => "l", "м" => "m", "н" => "n", "о" => "o", "п" => "p",
        "р" => "r", "с" => "s", "т" => "t", "у" => "u", "ф" => "f",
        "х" => "kh", "ц" => "ts", "ч" => "ch", "ш" => "sh", "щ" => "shch",
        "ь" => "", "ю" => "iu", "я" => "ia",

        " " => "_", "/" => "_"
    ];

    $str = strtr($str, $tr);
    $str = preg_replace('/[^A-Za-z0-9_\-.]/', '', $str);
    return $str;
}

Від Тетяна

IT-спеціалістка, викладачка, фанатка сучасних технологій. З 2009 року занурена у світ цифрового дизайну, веб-розробки та адміністрування систем. Ділюсь знаннями про веб-технології, IT-інструменти та корисні лайфхаки, викладаю студентам, навчаюсь сама.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *