Запретить слеш (/) в поиске

Статус
В этой теме нельзя размещать новые ответы.
S

Striche

Прохожие
NetCat 2.3, с этого форума. Все работает, все настроенно. единственное при поиске по символу слеш (/) и одинарной ковычке (') выдает ошибку:
"Warning: preg_replace() [function.preg-replace]: Unknown modifier ')' in w:\home\test5.ru\www\system\require\s_list.inc.php(367) : eval()'d code on line 1"

В php я не силен - поэтому надеюсь на помощь.
 
покажи код 367 строки, или найди 3ий параметр в preg_replace(1ый, 2ый, 3ий);
и до этой строки напиши
3ий = str_replace(array('/', "'"), '', 3ий);
 
  • Заблокирован
  • #3
покажи код 367 строки, или найди 3ий параметр в preg_replace(1ый, 2ый, 3ий);
и до этой строки напиши
3ий = str_replace(array('/', "'"), '', 3ий);
чушь!.. сказано же
при поиске по символу слеш (/) и одинарной ковычке (')
а в твоем примере они тупо вырезаются..
спецсимволы просто заэкранировать (addSlashes или регулярками) надо..
 
Мне эти символы в поиске не нужны.
Без них всё хорошо ищется.
Подскажите как отфильтровать не нужные символы при передачи данных из формы в поиск. Я понимаю, что это надо сделать на этапе получения данных, или до их отправки. Но плохо знаю php, по этому мне нужна часть кода для примера, и место куда его вставить.
 
покажи код 367 строки, или найди 3ий параметр в preg_replace(1ый, 2ый, 3ий);
и до этой строки напиши
3ий = str_replace(array('/', "'"), '', 3ий);
Сейчас на трезвую голову начал решать проблему сного, это как раз то что нужно. Только, я не пойму, где надо вставлять "3ий = str_replace(array('/', "'"), '', 3ий);"
Какой файл обрабатывает переменную полученную из формы, и какое ее имя. :nezn: :ah:
 
у тебя написано в каком файле ошибка, и на какой строчке.
w:\home\test5.ru\www\system\require\s_list.inc.php (367 строка)

на 367 строке будет написано что то вроде
preg_replace('/текст/', $repl, $source);

до этой строки надо добавить или предложенный мной, или вторым постером строки.
1. $source = str_replace(array('/', "'"), '', $source); //это уберет все / и ' из запроса
или
2. $source = addslashes($source); // оставит ' и \ и запрос будет рабочим
 
  • Заблокирован
  • #7
вырезаем все лишнее (в т.ч. кавычки и слэши)
$source = preg_replace('/[^\w\x7F-\xFF\s]/', ' ', trim($source));

убираем лишние пробелы
$source = preg_replace(' +, ' ', $source);
 
Спасибо большое!
Пришлось сделать проверку условий поиска через отдельный php файл, т.к. s_list.inc.php отвечает не только за поиск. Наверно получилось через жопу, но работает :)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху