Si vous voulez une double conversion avec une précision à chaque lettre, vous devez améliorer un peu les méthodes. J'ai la traduction utilisée pour l'url, et le paramètre url est recherché dans la base de données. C'est pourquoi il est très important pour moi de conserver les caractères exacts sans remplacer l'un par l'autre.
! !! Support des symboles ukrainiens.
/**
* @param $string
*
* @return string only cyrillic letter
*/
function to_cyrillic($string):string
{
$gost = [
"a" => "а", "b" => "б", "v" => "в", "g" => "г", "d" => "д", "e" => "е", "yo" => "ё",
"j" => "ж", "z" => "з", "ii" => "и", "ji" => "й", "k" => "к",
"l" => "л", "m" => "м", "n" => "н", "o" => "о", "p" => "п", "r" => "р", "s" => "с", "t" => "т",
"y" => "у", "f" => "ф", "h" => "х", "c" => "ц",
"ch" => "ч", "sh" => "ш", "sch" => "щ", "ie" => "ы", "u" => "у", "ya" => "я", "A" => "А", "B" => "Б",
"V" => "В", "G" => "Г", "D" => "Д", "E" => "Е", "Yo" => "Ё", "J" => "Ж", "Z" => "З", "I" => "И", "Ji" => "Й",
"K" => "К", "L" => "Л", "M" => "М",
"N" => "Н", "O" => "О", "P" => "П",
"R" => "Р", "S" => "С", "T" => "Т", "Y" => "Ю", "F" => "Ф", "H" => "Х", "C" => "Ц", "Ch" => "Ч", "Sh" => "Ш",
"Sch" => "Щ", "Ie" => "Ы", "U" => "У", "Ya" => "Я", "'" => "ь", "_'" => "Ь", "''" => "ъ", "_''" => "Ъ",
"yi" => "ї", "ge" => "ґ",
"ye" => "є",
"Yi" => "Ї",
"II" => "І",
"Ge" => "Ґ",
"YE" => "Є",
];
return strtr($string, $gost);
}
/**
* @param $string
*
* @return string only latin letter
*/
function to_latin($string):string
{
$gost = [
"а" => "a", "б" => "b", "в" => "v", "г" => "g", "д" => "d",
"е" => "e", "ё" => "yo", "ж" => "j", "з" => "z", "и" => "ii",
"й" => "ji", "к" => "k", "л" => "l", "м" => "m", "н" => "n",
"о" => "o", "п" => "p", "р" => "r", "с" => "s", "т" => "t",
"у" => "y", "ф" => "f", "х" => "h", "ц" => "c", "ч" => "ch",
"ш" => "sh", "щ" => "sch", "ы" => "ie", "э" => "e", "ю" => "u",
"я" => "ya",
"А" => "A", "Б" => "B", "В" => "V", "Г" => "G", "Д" => "D",
"Е" => "E", "Ё" => "Yo", "Ж" => "J", "З" => "Z", "И" => "I",
"Й" => "Ji", "К" => "K", "Л" => "L", "М" => "M", "Н" => "N",
"О" => "O", "П" => "P", "Р" => "R", "С" => "S", "Т" => "T",
"У" => "Y", "Ф" => "F", "Х" => "H", "Ц" => "C", "Ч" => "Ch",
"Ш" => "Sh", "Щ" => "Sch", "Ы" => "Ie", "Э" => "E", "Ю" => "U",
"Я" => "Ya",
"ь" => "'", "Ь" => "_'", "ъ" => "''", "Ъ" => "_''",
"ї" => "yi",
"і" => "ii",
"ґ" => "ge",
"є" => "ye",
"Ї" => "Yi",
"І" => "II",
"Ґ" => "Ge",
"Є" => "YE",
];
return strtr($string, $gost);
}