Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: навесной фильтр  (Прочитано 6222 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kopper
Гость
« : 25-04-2007 20:52 » 

Привет вам! Возникла такая проблема: необходимо на простенькую гостевую книгу, висящую на апаче(гостевая книга вся - это html-страничка и принимающий из нее данные cgi-скрипт), поставить фильтр каких-то определенных слов, которые не будут допускать на обработку к скрипту данные из html-формы(скажем не пропускать матные слова). Т.е. грубо говоря нужен навесной фильтр... Подскажите плз вектор развития кто знает =)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 26-04-2007 10:42 » 

Вариантов несколько. Я бы использовал регулярные выражения.

Код: (Perl)
my @words = (); // список слов - заполнить заранее любым способом
my $re;

$re = join('\E|\Q', @words);
if ($re eq '')
{
  // слов в списке нет
}
else
{
  $re = '\b(\Q' . $re . '\E)\b';
  if (m/$re/)
  {
    // слова из списка встречаются
  }
  else
  {
    // таких слов нет
  }
}

Вне зависимости от логики способ составления регулярного выражения можно не менять.

Предупреждаю - код не тестил: жду с минуты на минуту отключения электричества...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Kopper
Гость
« Ответ #2 : 26-04-2007 18:39 » 

спасибо огромное, введу эту штуку в свою CGI-программу =)!!!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 27-04-2007 05:35 » 

Kopper, также можно замену сделать.

Простую:
Код: (Perl)
# .....

s/$re/***/g;

Словарную:
Код:
%dictionary = (); // список пар "исходное слово" => "замена"
@words = keys %dictionary;

# .......

s/$re/$dictionary{$1}/ge

Еще рекомендую использовать модификатор "i".
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines