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.
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.
%Vor%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 .
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.
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.
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%Tags und Links jquery