Domanda

Non molto tecnico, ma...Devo implementare un filtro per le parolacce in un nuovo sito che stiamo sviluppando.Quindi ho bisogno di un elenco di parolacce "buone" con cui nutrire il mio db...qualche suggerimento/direzione?Guardarsi intorno con Google I trovato questo uno, ed è un inizio, ma niente di più.

Sì, lo so, questi filtri sono facilmente sfuggibili...ma la volontà del cliente è la volontà del cliente!!!:-)

Il sito dovrà filtrare sia le parole inglesi che quelle italiane, ma per l'italiano posso chiedere ai miei colleghi di aiutarmi con un elenco di "parolacce" creato dalla comunità :-) - basterà una email.

Grazie per qualsiasi aiuto.

È stato utile?

Soluzione

Non ho visto alcuna lingua specificata ma puoi usarlo per PHP, genererà un RegEx per ogni lavoro inserito in modo che anche gli errori di ortografia intenzionali (ad es.@ss, i3itch) verrà catturato.

<?php

/**
 * @author unkwntech@unkwndesign.com
 **/

if($_GET['act'] == 'do')
 {
    $pattern['a'] = '/[a]/'; $replace['a'] = '[a A @]';
    $pattern['b'] = '/[b]/'; $replace['b'] = '[b B I3 l3 i3]';
    $pattern['c'] = '/[c]/'; $replace['c'] = '(?:[c C (]|[k K])';
    $pattern['d'] = '/[d]/'; $replace['d'] = '[d D]';
    $pattern['e'] = '/[e]/'; $replace['e'] = '[e E 3]';
    $pattern['f'] = '/[f]/'; $replace['f'] = '(?:[f F]|[ph pH Ph PH])';
    $pattern['g'] = '/[g]/'; $replace['g'] = '[g G 6]';
    $pattern['h'] = '/[h]/'; $replace['h'] = '[h H]';
    $pattern['i'] = '/[i]/'; $replace['i'] = '[i I l ! 1]';
    $pattern['j'] = '/[j]/'; $replace['j'] = '[j J]';
    $pattern['k'] = '/[k]/'; $replace['k'] = '(?:[c C (]|[k K])';
    $pattern['l'] = '/[l]/'; $replace['l'] = '[l L 1 ! i]';
    $pattern['m'] = '/[m]/'; $replace['m'] = '[m M]';
    $pattern['n'] = '/[n]/'; $replace['n'] = '[n N]';
    $pattern['o'] = '/[o]/'; $replace['o'] = '[o O 0]';
    $pattern['p'] = '/[p]/'; $replace['p'] = '[p P]';
    $pattern['q'] = '/[q]/'; $replace['q'] = '[q Q 9]';
    $pattern['r'] = '/[r]/'; $replace['r'] = '[r R]';
    $pattern['s'] = '/[s]/'; $replace['s'] = '[s S $ 5]';
    $pattern['t'] = '/[t]/'; $replace['t'] = '[t T 7]';
    $pattern['u'] = '/[u]/'; $replace['u'] = '[u U v V]';
    $pattern['v'] = '/[v]/'; $replace['v'] = '[v V u U]';
    $pattern['w'] = '/[w]/'; $replace['w'] = '[w W vv VV]';
    $pattern['x'] = '/[x]/'; $replace['x'] = '[x X]';
    $pattern['y'] = '/[y]/'; $replace['y'] = '[y Y]';
    $pattern['z'] = '/[z]/'; $replace['z'] = '[z Z 2]';
    $word = str_split(strtolower($_POST['word']));
    $i=0;
    while($i < count($word))
     {
        if(!is_numeric($word[$i]))
         {
            if($word[$i] != ' ' || count($word[$i]) < '1')
             {
                $word[$i] = preg_replace($pattern[$word[$i]], $replace[$word[$i]], $word[$i]);
             }
         }
        $i++;
     }
    //$word = "/" . implode('', $word) . "/";
    echo implode('', $word);
 }

if($_GET['act'] == 'list')
 {
    $link = mysql_connect('localhost', 'username', 'password', '1');
    mysql_select_db('peoples');
    $sql = "SELECT word FROM filters";
    $result = mysql_query($sql, $link);
    $i=0;
    while($i < mysql_num_rows($result))
     {
        echo mysql_result($result, $i, 'word') . "<br />";
        $i++;
     }
     echo '<hr>';
 }
?>
<html>
    <head>
        <title>RegEx Generator</title>
    </head>
    <body>
        <form action='badword.php?act=do' method='post'>
            Word: <input type='text' name='word' /><br />
            <input type='submit' value='Generate' />
        </form>
        <a href="badword.php?act=list">List Words</a>
    </body>
</html>

Altri suggerimenti

Diffidare di errori clamorosi.

"Apple ha commesso il clamoroso errore di costringere a uscire il suo visionario - voglio dire, guarda cosa ha combinato NeXT!"

Hmm."clbuttico".

Google "clbuttic" - migliaia di risultati!

C'è qualcuno che chiama la sua macchina 'clbuttic'.

Ci sono bacheche "Clbuttic Steam Engine".

Dizionario Webster: nessun aiuto.

Hmm.Cosa può essere?

SUGGERIMENTO:Le persone che fanno i buttumumptions sui loro script di regex saranno imbarcate quando ripeteranno questo errore mbuttive.

Shutterstock ha un repository Github con a elenco di parolacce utilizzato per il filtraggio.

Puoi verificarlo qui: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

Se qualcuno ha bisogno di un'API, Google attualmente fornisce un indicatore di parolacce.

http://www.wdyl.com/profanity?q=naughtyword

{
response: "false"
}

Aggiornamento:Google ha ora rimosso questo servizio.

Direi di rimuovere semplicemente i post non appena ne vieni a conoscenza e di bloccare gli utenti che sono eccessivamente espliciti con i loro post.Puoi dire cose molto offensive senza usare parolacce.Se blocchi la parola culo (aka asino), le persone digiteranno semplicemente a$$ o /\55, o qualunque altra cosa debbano digitare per superare il filtro.

+1 sull'errore Clbuttic, penso che sia importante che i filtri "parolacce" eseguano la scansione sia per gli spazi iniziali che finali (ad esempio " culo ") anziché solo per la stringa esatta in modo da non avere parole come clbuttic , clbuttes, buttert, buttess, ecc.

WikipediaClueBot ha un filtro per le parolacce, leggi la sua fonte.

http://en.wikipedia.org/wiki/User:ClueBot/Source#Score_list

Potresti sempre convincere il cliente ad avere una sessione di utenti che pubblicano costantemente imprecazioni e trovare una soluzione semplice per aggiungerli al sistema.È un sacco di lavoro ma probabilmente sarà più rappresentativo della comunità.

Nella ricerca su questo argomento ho stabilito che ciò che era necessario era qualcosa di più di un semplice elenco che eseguisse sostituzioni arbitrarie.Ho costruito un servizio web che ti permette di identificare il livello di 'pulizia' che desideri.Si sforza anche di identificare i falsi positivi, ad es.dove una parola può essere cattiva in un contesto ma non in altri.Dare un'occhiata a http://filterlingual.com

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top