[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: простейший фильтр мата
Gaydar
Здраствуйте, я начал писать простейший "фильтр мата" на ПХП постепенно - от простого к сложному и вот возникла проблема.
<?php
$str=$_POST["msg"];
$expstr=explode(" ",$str);
$mat=array("",""); // Этот массив заполняю матерными словами
for($i=0;$i<count($expstr);$i++) // Двойной цикл, предназначенный для вывода всех слов исходного
//массива , кроме матерных слов.

{
$k=0;
for($k=0;$k<count($mat);$k++)
{
if($expstr[$i]==$mat[$k])
{}
else
{echo($expstr[$i]);}
}
}

?>

ПС
Как написать подобную программу?



Спустя 4 минуты, 35 секунд (6.09.2010 - 21:59) ApuktaChehov написал(а):
Тут регулярками надо. Я бы регулярками сделал.

Хотя это зависит от того, что требуется.

Спустя 7 минут, 52 секунды (6.09.2010 - 22:06) twin написал(а):
Цитата
Как написать подобную программу?

Если именно по такому принципу, то она давно написана и называется "функция array_diff()" smile.gif

    $expstr = explode(' ', $str);
    $mat = array('мат'); // Этот массив заполняю матерными словами
    echo implode(' ', array_diff($expstr, $mat)); 

Спустя 42 секунды (6.09.2010 - 22:07) Gaydar написал(а):
Про регулярные выражения я еще даже не читал , но спасибо за подсказку - возьму на заметку.
А без них это возможно?Мне самому кажется , что можно обойтись теми средствами, что есть в приведенном коде, но где то зарыта ошибка.
Есть момент - если я вместо вывода ставлю счетчик мата , то он считает правильно.
ПС
(программу пишу ради тренировки, постепенно читаю новые темы , когда есть время и выдумываю себе задание)

Спустя 6 минут, 9 секунд (6.09.2010 - 22:13) DedMorozzz написал(а):
нечего тут регулярками делать. Тут массивы нужны. Да и фильтры антимата - это БД. Причём не маленькая. Ибо надо учитывать и похожие символы.
В общем - достаточно трудоёмкий процесс.

Спустя 5 минут, 25 секунд (6.09.2010 - 22:19) Gaydar написал(а):
Немного уточню - то, что я пишу это не полноценный фильтр мата.
Эдакая выдумка для тренировки (пробую писать 1е программы в жизни).
Мне достаточно чтобы он фильтровал хотя бы парочку матерных слов даже без их вариаций.

Спустя 4 минуты, 54 секунды (6.09.2010 - 22:24) Basili4 написал(а):
Gaydar
ты главное на слово затсрахуйте неругайся а то блин бесит......
и слово бляха это тоже не мат
а то есть тут блин один поделкин поймаю "уши оторву"

Спустя 43 минуты, 10 секунд (6.09.2010 - 23:07) Gaydar написал(а):
Можно по-другому сказать , что я хочу написать.
Есть 2 массива
Мас1
Мас2
Нужно вывести на экран все слова из Мас1, которых нет в Мас2.

Спустя 3 минуты, 21 секунда (6.09.2010 - 23:10) Ice написал(а):
Ну дык решение уже было дано выше. Array_diff

Спустя 21 минута, 5 секунд (6.09.2010 - 23:31) vasa_c написал(а):
Боитесь слова "хуй"?

Спустя 8 минут, 58 секунд (6.09.2010 - 23:40) Gaydar написал(а):
Ну array_diff это я уже понял , а я хочу попробовать написать это с помощью циклов. Я ж писал, что тренируюсь , пишу первые в жизни программы.
Это мне для понимания .

Спустя 37 минут, 17 секунд (7.09.2010 - 00:17) Basili4 написал(а):
Gaydar
Циклы для понимания blink.gif чего вних понимать то

while (true) {}; вот ТруЪ цикл.

Спустя 1 час, 25 минут, 24 секунды (7.09.2010 - 01:43) Ice написал(а):
Циклом хочешь, ну на тебе циклом smile.gif


<?php
$arr1 = array( 'здравствуй, ', 'жопа', ' Новый', ' год!' );
$arr2 = array( 'жопа' );


(
string)$out;
foreach( $arr1 as & $word )
{
if( ! in_array( $word, $arr2 ) )
$out .= $word;
}
echo $out; // Здравствуй, Новый год!
?>

Спустя 5 часов, 28 минут, 14 секунд (7.09.2010 - 07:11) Семён написал(а):
Отфильтровать мат - бред.
жопа / ж.о.п.а / ж_о_п_а / жооопаааа / ж0пa / ж о п а

и множество других бесконечных вариантов

Спустя 56 минут, 45 секунд (7.09.2010 - 08:08) linker написал(а):
А также fucking shit, bitch, motherfucker и прочее.

Спустя 2 часа, 26 минут, 13 секунд (7.09.2010 - 10:34) Bezdna написал(а):



function censorwords($text) {

$query = mysql_query("SELECT `sensword` FROM `setting`");
$res = mysql_fetch_array($query);
$word_list = explode("\r\n", $res['sensword']);
for ($i=0; $i < count($word_list); $i++) {
if ($word_list[$i] != "") $text = preg_replace("/".$word_list[$i]."/i", "****", $text);
}
return $text;
}

Спустя 7 минут, 37 секунд (7.09.2010 - 10:42) Basili4 написал(а):
Это как сетевой фильтр ставить на порно сайты. эффективности 0. А начальника расстроить может. smile.gif

Спустя 6 минут, 36 секунд (7.09.2010 - 10:48) Bezdna написал(а):
Цитата (Basili4 @ 7.09.2010 - 10:42)
эффективности 0


Не скажи - если работники будут сидеть на порносайтах не 8 рабочих часов, а 2, то начальник уже будет спать спокойнее.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.