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

208
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
Как взять значение из исходного кода сайта?

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

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

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

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

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

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

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

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

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

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

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

193