Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фильтрация мата
 
 автор: SnooPI   (13.04.2007 в 18:36)   письмо автору
 
 

Здравсйтвуйте....
Мне нужно сделать такую функцию как фильтрация мата....
Тоже в боте :)

Вообще если человек пишет матное слово 3 раза, то его номер($msg['from']) заносится в файл banlist.txt

Вообщем бот смотрит что написал человек и если это слово имеется в файле с матами fuck.txt , и если оно напсиано им 3 раза, то его нмоер заносится в файл банлиста....
Вообщем примерно так..
Может лучше посоветуете

   
 
 автор: bronenos   (13.04.2007 в 19:59)   письмо автору
 
   для: SnooPI   (13.04.2007 в 18:36)
 

Для функционирования нужно:
В бан листе каждый ник на новой строчке
В списке мата аналогично
В temp.txt список НОМЕР СУДИМОСТЬ
где судимость это текущее количество выражении пользователя

<?php
// основные данные
$ban 'banlist.txt';
$mat 'fuck.txt';
$tmp 'temp.txt';
$uin $msg['from'];

// проверяем сообщение
$mat file ($mat);
$find false;
foreach (
$mat as $m)
{
  if (
strpos($msg['text'], trim($m)) !== false)
  { 
$find true; break; }
}

// если найден мат то проверяем судимость
// или выходим
if (!$find) die();

$tmp file ($tmp);
$qty = array();

foreach (
$tmp as $t)
{
  list (
$u$n) = explode (' '$t);
  
$qty[$u] = intval ($n);
}

// если такого нет то заводим счетчик
if (!isset($qty[$uin])) $qty[$uin] = 1;

// если судимость меньше 3 то +1
elseif ($qty[$uin] < 3$qty[$uin]++;

// если судимость 3 то...
else
{
  
// удаляем из временного списка
  
unset ($qty[$uin]);

  
// записываем в бан лист
  
$fp fopen ($ban'a');
  
fwrite ($fp"$uin\n");
  
fclose ($fp);
}

// и обновляем файл со счетчиком
$fp fopen ($tmp'w');
foreach (
$qty as $u=>$n)
  
fwrite ($fp"$u $n\n");
fclose ($fp);
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования