Wie kann ich einen jQuery-Schimpfwort- / Schlechter-Wort-Filter erstellen?

8

Ich weiß, dass es viele Argumente dafür gibt, warum dies eine schlechte Idee ist, aber in meiner Implementierung plane ich, schlechte Wörter in den Kontoeinstellungen zu aktivieren / deaktivieren. Mit anderen Worten, schlechte Wörter sind standardmäßig sichtbar, werden aber bei Aufforderung deaktiviert / ausgeblendet.

Der Plan wird sein, eine JSON-Zeichenfolge an den Client zu senden und den Client die schlechten Wörter herausfiltern zu lassen.

json Zeichenfolge

%Vor%

Originalphrase

%Vor%

endgültige Ausgabe

%Vor%

das habe ich bisher versucht

%Vor%

jetzt auf einer Randnotiz, ich benutze asp.net mvc und ich "könnte" dies auf der Serverseite tun, aber ich dachte, dass dies besser wäre, wenn auf den Client ausgelagert ... Ich bin offen für Vorschläge dazu.

    
Chase Florell 27.12.2010, 18:58
quelle

6 Antworten

2

Also habe ich den Basisvorschlag genommen, den @Harmen gegeben hat, und ich habe ihn zu einem jQuery-Plugin erweitert. Dies scheint die beste Implementierung zu sein, auf die ich möglicherweise kommen könnte.

jQuery.profanityFilter

%Vor%     
Chase Florell 14.02.2012, 01:05
quelle
12

So etwas könnte funktionieren:

%Vor%

Arbeiten Beispiel auf jsFiddle

Bearbeiten : Grenzen wurden hinzugefügt, damit Wörter, die die Schimpfwörter enthalten, nicht ersetzt werden. Ich habe doppelte Backslashes verwendet, da Backslashes in einem String maskiert werden sollten. siehe dieses Thema .

    
Harmen 27.12.2010 19:08
quelle
4

Hier ist eine leichte Funktion.

%Vor%     
angry kiwi 25.04.2011 16:19
quelle
1

Wenn Sie Objekte vom Server zum Client verschieben, müssen Sie immer Bandbreite gegenüber Verarbeitungskosten berücksichtigen. Sicher, wenn Sie es auf der Client-Seite haben, werden Sie Ihre Verarbeitungskosten minimieren, aber Sie werden eine Menge Zeit damit verschwenden, die Liste der schlechten Wörter auf den Client zu verschieben.

Außerdem können Sie auf dem Server beispielsweise Posts vorverarbeiten und nur aktualisieren, wenn sich eine Regel ändert, wodurch noch mehr Prozesszeit eingespart wird.

    
Bruno Brant 27.12.2010 19:04
quelle
0

Das zurückgegebene JSON-Objekt kann keine wiederholten Attributnamen haben. Anstelle von { w: 'Swear1', w: 'Swear2' } sollte es [ 'Swear1', 'Swear2' ] sein.

Sie können den Text analysieren, um jedes Auftreten eines Schimpfwortes zwischen <span> -Tags mit einem bestimmten Klassenattribut zu filtern und zu umbrechen, und sie mit einer Funktion umschalten. Das sollte ein einfacher Ansatz sein.

    
ncuesta 27.12.2010 19:03
quelle
-1

Sie sollten alle Wörter wiederholen: Prüfen Sie für jedes Wort, ob eines Ihrer verbotenen Wörter vorhanden ist, bevor Sie es durch Sternchen ersetzen.

Um dies effizient zu machen, sollten Sie die Wörter in einer Hashtabelle speichern:

%Vor%

Iterate über jedes Wort und dann, ob es in der Hashtabelle ist. (Die Interpretation dessen, was ein "Wort" umfasst, hängt davon ab, ob Sie nur nach Zeichen suchen, die von Leerzeichen oder anderen Nicht-Alpha-Zeichen umgeben sind.)

%Vor%     
brildum 27.12.2010 19:39
quelle

Tags und Links