yoshkin Опубликовано 28 июля, 2016 Жалоба Поделиться Опубликовано 28 июля, 2016 Добрый день, котаны! Столкнулся с проблемой работы поиска на сайте.У знакомого магазин и куча товаров, в названии которых есть "+", ",", "/" Вводимый запрос эранируется: real_escape_string($str);И в результате, когда в поиске в выпадающем списке autocomplate выбирается такой товар, то результатом будет страница "Товары не найдены", вместо страницы выбранного товара. Кто-нибудь с таким уже сталкивался? Как получилось решить?Пока курю доки по sql Заранее спасибо за развернутые ответы. Цитата Ссылка на сообщение Поделиться на другие сайты
yoshkin Опубликовано 28 июля, 2016 Автор Жалоба Поделиться Опубликовано 28 июля, 2016 Как вариант, заменять спецсимволы на пробел.Но не могу найти (на рабочем ноуте xdebug отвалился) в какой момент запрос преобразовывается. Цитата Ссылка на сообщение Поделиться на другие сайты
yoshkin Опубликовано 28 июля, 2016 Автор Жалоба Поделиться Опубликовано 28 июля, 2016 Как вариант, заменять спецсимволы на пробел.Но не могу найти (на рабочем ноуте xdebug отвалился) в какой момент запрос преобразовывается. Может как вариант делать так? $keyword = preg_replace('/\,|\/|\+/g',' ', $keyword); Цитата Ссылка на сообщение Поделиться на другие сайты
yoshkin Опубликовано 28 июля, 2016 Автор Жалоба Поделиться Опубликовано 28 июля, 2016 Решил проблему: ищите в модели Request на 60 строке: return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val)); Замените ее на эту: return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', ' ', $val)); Цитата Ссылка на сообщение Поделиться на другие сайты
yoshkin Опубликовано 28 июля, 2016 Автор Жалоба Поделиться Опубликовано 28 июля, 2016 Решил проблему: ищите в модели Request на 60 строке: return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val)); Замените ее на эту: return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', ' ', $val)); Минут такой, что мы будем видеть не карточку выбранного товара, а несколько товаровНо это лучше, чем "нет товаров" Цитата Ссылка на сообщение Поделиться на другие сайты
yoshkin Опубликовано 28 июля, 2016 Автор Жалоба Поделиться Опубликовано 28 июля, 2016 либо можно регулярку скорректировать так: [^\p{L}\p{Nd}\d\s_\-\.\%\+\/\,\s] в этом случае не будут удаляться ",", "/", "+" Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.