Как сделать перевод набранного текста с латиницы на кириллицу и наоборот?

Поиск на сайте сделан через sphinx..
принцип аналог яндекса или гугла, когда набираешь на английской раскладке русское слово ))

ну например

regbnm nfyr --> купить танк
фззду шьфс 27 --> apple imac 27

d222aad38e4f46da84875b0e42a9d7c1.png
  • Вопрос задан
  • 977 просмотров
Пригласить эксперта
Ответы на вопрос 4
a13xsus
@a13xsus
Lazy developer
function switcher($text,$arrow=0){
  $str[0] = array('й' => 'q', 'ц' => 'w', 'у' => 'e', 'к' => 'r', 'е' => 't', 'н' => 'y', 'г' => 'u', 'ш' => 'i', 'щ' => 'o', 'з' => 'p', 'х' => '[', 'ъ' => ']', 'ф' => 'a', 'ы' => 's', 'в' => 'd', 'а' => 'f', 'п' => 'g', 'р' => 'h', 'о' => 'j', 'л' => 'k', 'д' => 'l', 'ж' => ';', 'э' => '\'', 'я' => 'z', 'ч' => 'x', 'с' => 'c', 'м' => 'v', 'и' => 'b', 'т' => 'n', 'ь' => 'm', 'б' => ',', 'ю' => '.','Й' => 'Q', 'Ц' => 'W', 'У' => 'E', 'К' => 'R', 'Е' => 'T', 'Н' => 'Y', 'Г' => 'U', 'Ш' => 'I', 'Щ' => 'O', 'З' => 'P', 'Х' => '[', 'Ъ' => ']', 'Ф' => 'A', 'Ы' => 'S', 'В' => 'D', 'А' => 'F', 'П' => 'G', 'Р' => 'H', 'О' => 'J', 'Л' => 'K', 'Д' => 'L', 'Ж' => ';', 'Э' => '\'', '?' => 'Z', 'ч' => 'X', 'С' => 'C', 'М' => 'V', 'И' => 'B', 'Т' => 'N', 'Ь' => 'M', 'Б' => ',', 'Ю' => '.',);
  $str[1] = array (  'q' => 'й', 'w' => 'ц', 'e' => 'у', 'r' => 'к', 't' => 'е', 'y' => 'н', 'u' => 'г', 'i' => 'ш', 'o' => 'щ', 'p' => 'з', '[' => 'х', ']' => 'ъ', 'a' => 'ф', 's' => 'ы', 'd' => 'в', 'f' => 'а', 'g' => 'п', 'h' => 'р', 'j' => 'о', 'k' => 'л', 'l' => 'д', ';' => 'ж', '\'' => 'э', 'z' => 'я', 'x' => 'ч', 'c' => 'с', 'v' => 'м', 'b' => 'и', 'n' => 'т', 'm' => 'ь', ',' => 'б', '.' => 'ю','Q' => 'Й', 'W' => 'Ц', 'E' => 'У', 'R' => 'К', 'T' => 'Е', 'Y' => 'Н', 'U' => 'Г', 'I' => 'Ш', 'O' => 'Щ', 'P' => 'З', '[' => 'Х', ']' => 'Ъ', 'A' => 'Ф', 'S' => 'Ы', 'D' => 'В', 'F' => 'А', 'G' => 'П', 'H' => 'Р', 'J' => 'О', 'K' => 'Л', 'L' => 'Д', ';' => 'Ж', '\'' => 'Э', 'Z' => '?', 'X' => 'ч', 'C' => 'С', 'V' => 'М', 'B' => 'И', 'N' => 'Т', 'M' => 'Ь', ',' => 'Б', '.' => 'Ю', );
  return strtr($text,isset( $str[$arrow] )? $str[$arrow] :array_merge($str[0],$str[1]));
}


echo switcher('hfcrkflrf зрз',0);//hfcrkflrf php
echo switcher('hfcrkflrf зрз',1);//раскладка зрз
echo switcher('hfcrkflrf зрз',2);//раскладка php


В вот чтобы определить нужную раскладку -- нужен словарь. По нему определяем, существует ли слово, если нет, тогда переводим в другую раскладку. Но работать будет не всегда, пользователь может ошибиться при вводе либо слово слишком специфическое (название товара, например). Поэтому это уже тянет на задание.

Из написанных библиотек нашел только одну и очень старую: lifeexample.ru/php-primeryi-skriptov/php-avtomatic...

Кстати, была подобная тема Автоматическая корректировка строки, набраной в неверной раскладке
Ответ написан
@dinegnet
решить что будет в Сфинксе, какая основная раскладка/кодировка.

И ВСЕ - и первоначальное заполнение БД Сфинкса и запрос по поиску - преобразовывать в эту кодировку/раскладку.
Ответ написан
Rastishka
@Rastishka
Я просто ищу в базе по исходной строке и по перевернутой.
Ответ написан
opium
@opium
Просто люблю качественно работать
просто делайте ее в коде без сфинкса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
25 апр. 2024, в 16:12
2000 руб./за проект
25 апр. 2024, в 16:08
130000 руб./за проект