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

Проблема со скриптом живой поиск ajax + php, непонятка с считываем с mysql, как решить?

Есть скрипт для живого поиска, но работает как то коряво, по английским буквам ищет, а по русским не хочет....пробовал много разных настроек, но ничего не помогает, может кто встречался с такими вопросами и знает решение, где ковырять?

Вроде проблема в куске кода php
$search_string = preg_replace("/[^A-Za-z0-9А-Яа-я]+$/", "", $_POST['query']);


не хочет распознавать русские символы по базе....
после ввода 2-х символов, пишет что ничего нет.
7bb49a26f8624a9c9ba7df190f36575c.jpg

Если написать по английски, тогда все работает...
4b0fbeadc4f7464ebdbd4e858c759b45.jpg

Это уже третий вариант "живого поиска", который удалось установить и подключить....но все они не совсем то что надо, поиск ведется по символам по-порядку, т.е. если (например слово в базе: "подгузник для детей 2-3 года 50 шт.") написать в поиске запрос "подгузник 50" ничего не найдет, так как именно таких словосочетаний нет. Наверное нужно какое-то дополнение в виде скрипта "автозаполнение" или еще чего то..... может кто знает подобный скрипт?
  • Вопрос задан
  • 702 просмотра
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 3
miraage
@miraage
Старый прогер
Так пробовали?

$search_string = preg_replace("/[^A-Za-z0-9А-Яа-я]+$/u", "", $_POST['query']);


// EDIT

Видать модификатор конца строки лишний.

$strings = [
    'foo',
    'фУbar',
    'бар',
    '53252',
    '-x-x-x-x-'
];

foreach ($strings as $string) {
    var_dump(preg_replace('/[^A-Za-z0-9А-Яа-я]+/u', '', $string));
}

string(3) "foo"
string(7) "фУbar"
string(6) "бар"
string(5) "53252"
string(4) "xxxx"
Ответ написан
Stalker_RED
@Stalker_RED
А если убрать preg_replace поиск работает? Может проблема с кодировкой? Посмотрите дебаггером или выведите в лог какой именно запрос к базе формируется.
Ответ написан
@evgen_nova Автор вопроса
встречал подобную проблему на каком-то сайте, так решили таким способом
preg_replace("#[^А-ЯA-Z]#iu", " ", $_POST['query']);
Ответ написан
Ваш ответ на вопрос

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

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