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

Тема в разделе "NetCat", создана пользователем Striche, 14 июн 2007.

Статус темы:
Закрыта.
  1. Striche

    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 я не силен - поэтому надеюсь на помощь.
     
  2. difour

    difour Прохожие

    покажи код 367 строки, или найди 3ий параметр в preg_replace(1ый, 2ый, 3ий);
    и до этой строки напиши
    3ий = str_replace(array('/', "'"), '', 3ий);
     
  3. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    чушь!.. сказано же
    а в твоем примере они тупо вырезаются..
    спецсимволы просто заэкранировать (addSlashes или регулярками) надо..
     
  4. Striche

    Striche Прохожие

    Мне эти символы в поиске не нужны.
    Без них всё хорошо ищется.
    Подскажите как отфильтровать не нужные символы при передачи данных из формы в поиск. Я понимаю, что это надо сделать на этапе получения данных, или до их отправки. Но плохо знаю php, по этому мне нужна часть кода для примера, и место куда его вставить.
     
  5. Striche

    Striche Прохожие

    Сейчас на трезвую голову начал решать проблему сного, это как раз то что нужно. Только, я не пойму, где надо вставлять "3ий = str_replace(array('/', "'"), '', 3ий);"
    Какой файл обрабатывает переменную полученную из формы, и какое ее имя. :nezn: :ah:
     
  6. difour

    difour Прохожие

    у тебя написано в каком файле ошибка, и на какой строчке.
    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. bueno

    bueno Читатель

    Заблокирован
    Регистр.:
    7 май 2007
    Сообщения:
    236
    Симпатии:
    69
    вырезаем все лишнее (в т.ч. кавычки и слэши)
    $source = preg_replace('/[^\w\x7F-\xFF\s]/', ' ', trim($source));

    убираем лишние пробелы
    $source = preg_replace(' +, ' ', $source);
     
  8. Striche

    Striche Прохожие

    Спасибо большое!
    Пришлось сделать проверку условий поиска через отдельный php файл, т.к. s_list.inc.php отвечает не только за поиск. Наверно получилось через жопу, но работает :)
     
Статус темы:
Закрыта.