powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Преобразование кодов символов по принципу буква R (114)->К (1082)
5 сообщений из 5, страница 1 из 1
Преобразование кодов символов по принципу буква R (114)->К (1082)
    #39496347
Syrbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Есть необходимость преобразовать набранный код с клавиатуры.
Есть база городов. Необходимо сделать так что бы Автозаполнение работала даже если пользователь набирает латинские буквы чтоб они преобразовались на кириллицу и поиск был по базе на кириллице

Например если пользователь случайно набрал с клавиатуры сочетание
{f,f то мы должны перевести так чтобы это было Хаба
|;br то мы должны перевести так чтобы это было Ёжик
>,rf то мы должны перевести так чтобы это было Юбка

У кого есть пример поделитесь пожалуйста?
...
Рейтинг: 0 / 0
Преобразование кодов символов по принципу буква R (114)->К (1082)
    #39496368
Syrbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Syrbek,

Таким образом я получаю коды символов
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$string ="{f,f";
$asciiString = '';
for($i = 0; $i != strlen($string); $i++)
{

    $asciiString .= "&#".ord($string[$i]).";";

}

$asciiCode = str_replace("&", "&", $asciiString);

echo "String in ASCII:<br>";

echo $asciiString;

echo "<br>The code:<br>";

echo $asciiCode;


Далее думаю надо сверять коды как тут
То есть сделать массив и менять коды на соответсвующие?
Наверное слишком замудрено получается но то что в голову пришло выкладываю
...
Рейтинг: 0 / 0
Преобразование кодов символов по принципу буква R (114)->К (1082)
    #39496369
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На клиенте сразу и заменить.

Как-то примерно так делал:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<input type="text" onchange="check(this)" />
<script>
function check(o) {
    o.value = o.value.replace(/./g, replacer);
}
function replacer(l) {
    var o = 'qwertyuiop[]asdfghjkl;\'\\zxcvbnm,./'; // исходные символы
    var r = 'йцукенгшщзхъфывапролджэ\\ячсмитьбю.'; // заменяющие символы
    var i = o.indexOf(l);
    return i == -1 ? l : r.charAt(i);
}
</script>


Досконально не проверял, символы с шифтом надо добавить.

Однако, в этом коде есть небольшая проблема - некоторые символы присутствуют в обеих раскладках. Соответственно, в каких-то случаях их замена не требуется. Но в моем случае они не попадали под замену, потому оную проблему и не решал.
...
Рейтинг: 0 / 0
Преобразование кодов символов по принципу буква R (114)->К (1082)
    #39496375
Syrbek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,
Спасибо.
Дело в том что у меня поле Autocomplete по этому что бы наверняка сдела на стороне сервера так:
конечно это не скорость по этому если дадите полезный совет то буду рад
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
$replace = array(81 => 'Й', 113 => 'й', 87 => 'Ц', 119 => 'ц', 69 => 'У', 101 => 'у', 82 => 'К', 114 => 'к', 84 => 'Е', 116 => 'е', 89 => 'Н', 121 => 'н', 85 => 'Г', 117 => 'г', 73 => 'Ш', 105 => 'ш', 79 => 'Щ', 111 => 'щ', 80 => 'З', 112 => 'з', 123 => 'Х', 91 => 'х', 125 => 'Ъ', 93 => 'ъ', 65 => 'Ф', 97 => 'ф', 83 => 'Ы', 115 => 'ы', 68 => 'В', 100 => 'в', 70 => 'А', 102 => 'а', 71 => 'П', 103 => 'п', 72 => 'Р', 104 => 'р', 74 => 'О', 106 => 'о', 75 => 'Л', 107 => 'л', 76 => 'Д', 108 => 'д', 58 => 'Ж', 59 => 'ж', 34 => 'Э', 39 => 'э', 124 => 'Ё', 92 => 'ё', 90 => 'Я', 122 => 'я', 88 => 'Ч', 120 => 'ч', 67 => 'С', 99 => 'с', 86 => 'М', 118 => 'м', 66 => 'И', 98 => 'и', 78 => 'Т', 110 => 'т', 77 => 'Ь', 109 => 'ь', 60 => 'Б', 44 => 'б', 62 => 'Ю', 46 => 'ю');

$string ="QqWwEeRrTtYyUuIiOoPp{[}]AaSsDdFfGgHhJjKkLl:;|ZzXxCcVvBbNnMm<,>.";
$asciiString = '';

for($i = 0; $i != strlen($string); $i++)
{
    $asciiString .= $replace[ord($string[$i])];
}

echo "{$string}<br>";
echo $asciiString;
...
Рейтинг: 0 / 0
Преобразование кодов символов по принципу буква R (114)->К (1082)
    #39496391
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Syrbekу меня поле AutocompleteНе улавливаю разницы. Что может помешать?


Syrbekна стороне сервераЭто совсем не интересно, в PHP есть готовое. На выбор:
http://php.net/manual/ru/function.strtr.php
http://php.net/manual/ru/function.str-replace.php

Ну и в любом случае, сперва по ключевым символам (которые есть только в одной раскладке) можно определить необходимость замены.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Преобразование кодов символов по принципу буква R (114)->К (1082)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]