Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрет добавления сообщения на некоторые слова 
:(
    Опции темы
SIVka1
Дата 17.1.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Здравствуйте. У меня тут проблема с одним кодом.
Код

$cenz = file("files/cenzor.txt");
$deny = true;
if ($cenz!==NULL){   
   $searcTxt = explode(" ",$message);
   for ($i=0; $i<=count($cenz); $i++){
      for ($j=0; $j<=count($searcTxt); $j++){
         if (trim($searcTxt[j])==trim(strtolower($cenz[i])) && trim($searcTxt)!=="" && trim(strtolower($cenz[i]))!==""){
            $deny = false;
         }
      }
   }
}

// $cenz - фаил со словами
// $message - сообщение
// $deny - разрешение на добавление

Я хочу себе установить на гостевую книгу автоцензор на некоторые слова. Мой код, вроде правильный, как не проверял, но работать он все равно не хочет. Код проверяет каждое слово из сообщения, и если слово будет не разрешенное, то сообщение добавлено не будет. А у меня оно почему-то добавляется всегда
PM MAIL   Вверх
PARROT
Дата 17.1.2008, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Я правда не запрещаю добавлять такие сообщения, а заменяю слова на ***
Код

Смотри, есть у тебя текст к которому нужно применить фильтр
$text = "БОРОВ ЖИРНЫЙ! Чтоб он подавился!";

Есть файл с текстом
жирный
боров


Мы будем использовать функцию preg_replace дабы сопоставлять слова без учета регистра. Первый ее параметр - регулярное выражение, второй - на что заменить, третий - в чем ищем.

Для того чтобы составить регулярное выражение из данных записанных в текстовом файле, нужно их соответственно обработать верным способом. Сначало нужно считать весь файл ЦЕЛИКОМ (не в массив).

$badWordsSource = file_get_contents('badwords.txt');

Далее нужно составить нечто вроде жирный|боров|кляча, где "|" означает "или".

$badWodsExpr = implode("|", explode("\r\n", $badWordsSource));

Где explode разбивает строку по переносу строки, а implode собирает ее обратно. Можно еще сделать вариант с тем же str_replace:
$badWordsExpr = str_replace("\r\n", "|", $badWordsSource);
Это как вариант.

После мы делаем обработку preg_replace'ом

$text = preg_replace("/".$badWordsExpr."/is", "***", $text);


Добавлено @ 19:32
А еще в поиск глянь, тут фильтров было много.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
SIVka1
Дата 17.1.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 10.9.2007

Репутация: нет
Всего: нет



Ага, спасиб,  PARROT
Только я вот не понял как он у тебя все заменяет, вернее вот это - "/".$badWordsExpr."/is", 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0997 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.