Задать вопрос

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

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

ну например

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

d222aad38e4f46da84875b0e42a9d7c1.png
  • Вопрос задан
  • 1043 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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
Просто люблю качественно работать
просто делайте ее в коде без сфинкса.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы