2008-08-23 11 views
44

Nicht sehr technisch, aber ... Ich muss ein schlechtes Wort Filter in einer neuen Website implementieren, die wir entwickeln. Also brauche ich eine "gute" Liste der schlechten Wörter, um meine db mit ... irgendeinem Hinweis/Richtung zu füttern? Mit Google suche ich found this eins, und es ist ein Anfang, aber nichts mehr."bad words" filter

Ja, ich weiß, dass diese Art von Filtern leicht entkommen kann ... aber der Kunde wird der Kunde wird !!! :-)

Die Seite muss sowohl englische als auch italienische Wörter herausfiltern, aber für Italiener kann ich meine Kollegen bitten, mir mit einer Community-gebauten Liste von "parolacce" zu helfen :-) - eine E-Mail genügt.

Danke für jede Hilfe.

+20

Obscenity Filtering ... eine schlechte Idee oder eine wirklich intercoursing schlechte Idee? – stephenbayer

+1

team es mit einer Rechtschreibprüfung, wenn Sie mehr Rechtschreibfehler nach der Zensur bekommen, haben Sie irgendwo versaut und können damit umgehen – nailitdown

+0

verwandt: http://programmers.stackexchange.com/questions/143405/how-to- generate-language-safe-uuids –

Antwort

32

Ich habe keine Sprache angegeben, aber Sie können diese für PHP verwenden, es wird eine RegEx für jede Arbeit erzeugt, so dass sogar beabsichtigte Fehlbuchstabierungen (d. H. @ss, i3itch) ebenfalls abgefangen werden.

<?php 

/** 
* @author [email protected] 
**/ 

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> 
+15

On't-Day orget-day ig-Pay atin-lay. Urse-Cay-Ordens-Wege sind ar-Ill-st. Quay-eadable-ray. (ehemaliger Besitzer des AOL Nick Itshay). – plinth

+8

meinst du "On't-Tag orget-fay" – Raiyan

47

Vorsicht vor clbuttic mistakes.

+5

Ich öffnete diesen Thread mit der Absicht, diese gleiche Antwort hinzuzufügen ... und dann erkannte ich, dass ich Ihnen eine Aufwertung dafür gab vor langer Zeit :) –

1

Man kann immer den Client überzeugen, eine Sitzung der Benutzer nur ständig expletives zu haben und macht eine einfache Lösung veröffentlichen sie zum System hinzuzufügen. Es ist eine Menge Arbeit, aber es wird wahrscheinlich repräsentativer für die Gemeinschaft sein.

4

Ich würde sagen, nur die Beiträge zu entfernen, wenn Sie davon erfahren, und blockieren Sie Benutzer, die mit ihren Postings übermäßig explizit sind. Sie können sehr anstößige Dinge sagen, ohne Schimpfwörter zu benutzen. Wenn Sie das Wort Esel (auch bekannt als Esel) blockieren, geben die Leute einfach ein $$ oder/\ 55 ein oder was immer sie sonst noch eingeben müssen, um über den Filter zu kommen.

3

+1 auf den Clbuttic-Fehler, ich denke, es ist wichtig für "Bad Word" -Filter für beide führenden und nachfolgenden Leerzeichen (zB "ass") im Gegensatz zu nur für die genaue Zeichenfolge zu suchen, so dass wir nicht habe Wörter wie clbuttic, clbuttes, buttert, butess usw.

+4

Und nicht die Stadt Scunthorpe blockieren. – TRiG

+0

Leider wird das nicht Flüche am Anfang eines Absatzes oder in der Nähe von Satzzeichen loswerden. Wenn ich einen Absatz hätte, der aus "(badword)" besteht, würde es Ihren Test nicht bestehen. – proudgeekdad

-1

Ich vor kurzem fand dieses freie schlechte Wort, das on-line Webservice filtert. Sie ermöglichen WCF und Form Posts in JSON. Es funktioniert wirklich gut und ich muss die Liste nicht aktualisieren, da ihre Liste ständig aktualisiert wird. Sie haben sowohl kostenlose als auch erschwingliche Premium-Dienste zur Verfügung.

es ist einen Blick wert.

http://www.thefilthylist.com

-3

in diesem Thema forschen stellte ich fest, dass das, was war als nur eine Liste mehr benötigt wurde, die willkürliche Ersatz der Fall ist. Ich habe einen Webdienst eingerichtet, mit dem Sie das gewünschte Maß an "Sauberkeit" ermitteln können. Es wird auch versucht, falsche Positive zu identifizieren - d. H. Wo ein Wort in einem Kontext schlecht sein kann, aber in anderen nicht. Werfen Sie einen Blick auf http://filterlanguage.com

+1

Die URL war nicht erreichbar. – Lenin

6

Wenn jemand eine API benötigt, die derzeit Google ein schlechtes Wort Indikator liefern.

Aktualisierung: Google hat diesen Dienst jetzt entfernt.

+5

Scheint nicht mehr aktiv zu sein. – Nick