yoshkin Posted July 28, 2016 Report Share Posted July 28, 2016 Добрый день, котаны! Столкнулся с проблемой работы поиска на сайте.У знакомого магазин и куча товаров, в названии которых есть "+", ",", "/" Вводимый запрос эранируется: real_escape_string($str);И в результате, когда в поиске в выпадающем списке autocomplate выбирается такой товар, то результатом будет страница "Товары не найдены", вместо страницы выбранного товара. Кто-нибудь с таким уже сталкивался? Как получилось решить?Пока курю доки по sql Заранее спасибо за развернутые ответы. Quote Link to post Share on other sites
yoshkin Posted July 28, 2016 Author Report Share Posted July 28, 2016 Как вариант, заменять спецсимволы на пробел.Но не могу найти (на рабочем ноуте xdebug отвалился) в какой момент запрос преобразовывается. Quote Link to post Share on other sites
yoshkin Posted July 28, 2016 Author Report Share Posted July 28, 2016 Как вариант, заменять спецсимволы на пробел.Но не могу найти (на рабочем ноуте xdebug отвалился) в какой момент запрос преобразовывается. Может как вариант делать так? $keyword = preg_replace('/\,|\/|\+/g',' ', $keyword); Quote Link to post Share on other sites
yoshkin Posted July 28, 2016 Author Report Share Posted July 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)); Quote Link to post Share on other sites
yoshkin Posted July 28, 2016 Author Report Share Posted July 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)); Минут такой, что мы будем видеть не карточку выбранного товара, а несколько товаровНо это лучше, чем "нет товаров" Quote Link to post Share on other sites
yoshkin Posted July 28, 2016 Author Report Share Posted July 28, 2016 либо можно регулярку скорректировать так: [^\p{L}\p{Nd}\d\s_\-\.\%\+\/\,\s] в этом случае не будут удаляться ",", "/", "+" Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.