Bycie trollem internetowym ma swoje plusy i minusy, można kogoś zbluzgać bez powodu i cieszyć się swoją głupotą, czasami jednak administratorzy stron walczą z trollami stosując wymyślne filtry.
Tak jest lub było w przypadku wykrywania znanego „klaczowego” trolla okupującego swego czasu forum 4programmers, sprytny administrator Adam Boduch postanowił walczyć z twórczością trolla stosując taki oto wymyślny filtr:
<?php
/* ... */
Wrapper\Engine::instance()->atInit(function($engine) {
$is_troll_z_play = has_troll_cookie();
if ($_SERVER['REQUEST_METHOD'] === 'POST' && @$_GET['mode'] === 'submit') {
if (isset($_POST['username']) && isset($_POST['content'])) { // tylko anonimow
$matches_nick = troll_count_matches($_POST['username'], array(
'/deus/i' => 2.0,
'/klacz/i' => 2.0,
'/demonical.?monk/i' => 2.0
));
$pattern_body = array(
'/(?<!u)rucha/i' => 1.0,
'/klacz/i' => 1.0,
'/kutas/i' => 1.0,
'/sra/i' => 1.0,
'/g(ó|o)wn/i' => 1.0,
'/sperm/i' => 1.0,
'/ss(a|ie)/i' => 0.5,
'/wyli(z|ż)/i' => 0.5,
'/stajni/i' => 0.5,
'/zoofil/i' => 0.5
);
$matches_body = troll_count_matches($_POST['content'], $pattern_body);
if (isset($_POST['subject'])) { // nowy temat
$matches_body += 1.5 * troll_count_matches($_POST['subject'], $pattern_body);
$matches_body += 1.5 * troll_count_matches($_POST['tag'], $pattern_body);
}
if ($matches_nick + $matches_body > 2 || has_troll_cookie()) {
$is_troll_z_play = true;
$engine->log('contents.log', array(
'username' => $_POST['username'],
'content' => $_POST['content'],
'title' => @$_POST['title'],
'tag' => @$_POST['tag']
));
}
}
}
if ($is_troll_z_play) {
define('TROLL_Z_PLAY', true);
unset($_COOKIE['sid']);
unset($_COOKIE['temp']);
}
});
/* ... */
Regularne wyrażenia w połączeniu z systemem punktacji pozwoliły raz na zawsze pozbyć się trolla z forum, a Wam prezentuję to jako znakomity pomysł na wykrywanie tego typu niechcianych treści na stronach.