esistema1 Опубликовано 17 января, 2018 Жалоба Поделиться Опубликовано 17 января, 2018 Все добрый день!Настраваю поиск в админке в разделе заказы по email.Вписал вот эту строчку OR o.email LIKE "%'.$this->db->escape(trim($keyword)).'%" в keyword_filter - поиск заработал, но ище только если указывать email до собаки, т.е. допустим адрес adress@mail.ru, если указать adress и нажать поиск то он найдет а если вписать полный адрес (adress@mail.ru) то он вырежет символ @ и будет искать adressmail.ru - соответственно ничего не найдет. Подскажите пожалуйста что именно может вырезать символ @? $keyword_filter .= $this->db->placehold('AND (o.name LIKE "%'.$this->db->escape(trim($keyword)).'%" OR REPLACE(o.phone, "-", "") LIKE "%'.$this->db->escape(str_replace('-', '', trim($keyword))).'%" OR o.address LIKE "%'.$this->db->escape(trim($keyword)).'%" OR o.email LIKE "%'.$this->db->escape(trim($keyword)).'%" )'); Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 17 января, 2018 Автор Жалоба Поделиться Опубликовано 17 января, 2018 Возможно виновата вот эта строка return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val)); В файле api/reguest.phpВот весь код функции к которой обращается поиск public function get($name, $type = null) { $val = null; if(isset($_GET[$name])) $val = $_GET[$name]; if(!empty($type) && is_array($val)) $val = reset($val); if($type == 'string') return strval(preg_replace('/[^\p{L}\p{Nd}\d\s_\-\.\%\s]/ui', '', $val)); if($type == 'integer') return intval($val); if($type == 'boolean') return !empty($val); return $val; } Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 17 января, 2018 Автор Жалоба Поделиться Опубликовано 17 января, 2018 Даже не возможно а точно - убрав эту строку полностью поиск не вырезает символ @ - но эта функция вроде не только для поиска в админке.. Поэтому надо сделать по человечески.. Цитата Ссылка на сообщение Поделиться на другие сайты
esistema1 Опубликовано 17 января, 2018 Автор Жалоба Поделиться Опубликовано 17 января, 2018 Всем спасибо ))Проблему решил return strval(preg_replace('/[^\p{L}\p{Nd}\d\@\s_\-\.\%\s]/ui', '', $val)); Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.