Как заменить кириллицу на латиницу и наоборот. Без ошибок при возврате на кириллицу

276
30 сентября 2018, 02:10

Кодирую сообщения в base64, но кодировать кириллицу затратно по памяти, а вот латиница кодируется чуть ли не в два раза меньше. Задается вопрос, как переводить только буквы на латиницу и наоборот. Но чтобы без таких ошибок.

я => ya букву "я" мы перевели. а вот если обратно то латинская буква "а" заменит ее в "ya".

Answer 1

Эхехех... Называется это транслитерация. Выглядит примерно так

function translit($text, $toEng = true) { 
    $trans = array( 
        "а" => "a", 
        "б" => "b", 
        "в" => "v", 
        "г" => "g", 
        "д" => "d", 
        "е" => "e", 
        "ё" => "e", 
        "ж" => "zh", 
        "з" => "z", 
        "и" => "i", 
        "й" => "y", 
        "к" => "k", 
        "л" => "l", 
        "м" => "m", 
        "н" => "n", 
        "о" => "o", 
        "п" => "p", 
        "р" => "r", 
        "с" => "s", 
        "т" => "t", 
        "у" => "u", 
        "ф" => "f", 
        "х" => "kh", 
        "ц" => "ts", 
        "ч" => "ch", 
        "ш" => "sh", 
        "щ" => "shch", 
        "ы" => "y", 
        "э" => "e", 
        "ю" => "yu", 
        "я" => "ya", 
        "А" => "A", 
        "Б" => "B", 
        "В" => "V", 
        "Г" => "G", 
        "Д" => "D", 
        "Е" => "E", 
        "Ё" => "E", 
        "Ж" => "Zh", 
        "З" => "Z", 
        "И" => "I", 
        "Й" => "Y", 
        "К" => "K", 
        "Л" => "L", 
        "М" => "M", 
        "Н" => "N", 
        "О" => "O", 
        "П" => "P", 
        "Р" => "R", 
        "С" => "S", 
        "Т" => "T", 
        "У" => "U", 
        "Ф" => "F", 
        "Х" => "Kh", 
        "Ц" => "Ts", 
        "Ч" => "Ch", 
        "Ш" => "Sh", 
        "Щ" => "Shch", 
        "Ы" => "Y", 
        "Э" => "E", 
        "Ю" => "Yu", 
        "Я" => "Ya", 
        "Ъ" => "", 
        "ъ" => "", 
        "ь" => "", 
        "Ь" => "" 
    );
    if (!$toEng) $trans = array_flip($trans);
    return str_replace(array_keys($trans), $trans, $text);
}

Аналогично сделать и обратное, только вопрос в другом, либо проходить массив литер в обратном порядке, или как то придумывать как отделять символы

READ ALSO
Как взять значение из исходного кода сайта?

Как взять значение из исходного кода сайта?

Как взять определённое значение из исходного кода определённого сайта?

251
Вывести элемент массива

Вывести элемент массива

Формирую массив в цикле следобразом:

249
Обработка капчи средствами php - как быть?

Обработка капчи средствами php - как быть?

Есть скрипт который последовательно грузит файлы на сервер в группу вкНо проблема в том, что после 20 файлов выскакивает капча и не дает грузить...

229
Не работает Insert запрос

Не работает Insert запрос

Не работает запросОстальное по умолчанию прописано

245