frost18
@frost18
Программист PHP

Как поменять раскладку символов?

Пользователь пишет в строке поиска слово, мне нужно выдать автокомплит с результатами поиска. Бывает такое что пользователь забыл сменить раскладку и мне нужно искать по базе сразу в двух вариантах, в текущей и в перевернутой.
Написал код, только он что то не работает:
private function convertKeyRuEn($str){

        $pattern = [
            '/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/', '/,/', '/\./', '/\//',

            '/й/','/ц/','/у/','/к/','/е/','/н/','/г/','/ш/','/щ/','/з/','/х/','/ъ/',
            '/ф/','/ы/','/в/','/а/','/п/','/р/','/о/','/л/','/д/','/ж/','/э/',
            '/я/','/ч/','/с/','/м/','/и/','/т/','/ь/','/б/','/ю/', '/\./'
        ];

        $replacement = [
            'й','ц','у','к','е','н','г','ш','щ','з','х','ъ',
            'ф','ы','в','а','п','р','о','л','д','ж','э',
            'я','ч','с','м','и','т','ь','б','ю', '.',

            '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', ',', '.', '/',
        ];

        $string = preg_replace($pattern, $replacement, mb_strtolower($str, 'utf-8'));

        return mb_strtolower($string, 'utf-8');
    }
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ответы на вопрос 1
riky
@riky
Laravel
помоему лучше простой strtr использовать (и в $pattern можно все слеши убрать )

$result = strtr($string, [
    'а' => 'a', 
    'б' => 'b', 
    'в' => 'v', 
    'г' => 'g', 
    // ...
])


вот пример перевод в транслит https://gist.github.com/rik43/2eb7de83a59cc38d59e7
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽