Badwordsfilter

fanste

Erfahrenes Mitglied
Hallo,

Ich bin gerade dabei, ein Gästebuch mit einem Badwordfilter auszustatten. Ich stehe jetzt nur noch vor einem Problem. Der Überprüfung.

ich habe mich dafür entschieden, die Wörter einzeln zu prüfen, da ich es mittels soundex() machen will. Hat den Vorteil, dass auch verbotene Wörter erkannt werden, obwohl man diese mit -, usw unkenntlich machen will.
Hier hapert es aber. Ich bekomme die Wörter nicht so getrennt, dass am Ende noch alle Satzzeichen, Neulinien, usw vorhanden sind.

Diese Codes habe ich schon ausprbiert
PHP:
#Hier fehlt alles, was noch dabei bleiben soll (Satzzeichen, usw)
    $text = explode(' ',$text); 

    foreach($textWords as $key => $word)
	{
		if(in_array(soundex($word), $badwords))
		{
			$textWords[$key] = '--delete--';
		}
	}
############################
#Diese klappt nicht so ganz. Fehlen am Ende auch massenhaft Zeichen
$text = preg_replace("#(\s|)(\w){1,}(\s)#Ueis","\\1replaceit('\\2')\\3",$text);#Ich weis selbst, dass ich über RegExp noch einiges lernen muss ;)
function replaceit($text)
{
	global $badwords;
	if(in_array(soundex($text), $badwords))
	{
		return '--delete--';
	}
	else
	{
		return $text;
	}
}
Zudem habe ich dann noch vor, einen Zähler einzubauen, der mir die Ersetzungen mitzählt. Aber einer bestimmten Anzahl, soll der Beitrag erst nach Kontrolle durch einen Admin veröffentlicht werden können. Das werde ich aber selbst hinbekommen.


Ich hoffe, ihr könnt mir behilflich sein.
Danke schonmal an euch.
 
Ich glaube das wird schwer, weil wenn man z.B. "a* -sch 'l*ch" (Denkt euch bei * einfach mal die Buchstaben ;)) schreibt sind das ja drei Wörter, und da wird auch der check mit soundex() versagen, oder?
 
Schon möglich. Aber es geht mir ersteinmal darum, dass überhaupt gewisse Wörter gefiltert werden. Und nicht jeder Denkt daran, das so zu verschleiern. Zudem gibt es dann immer noch manuelle Kontrollen.

Wir hatten schon das Glück, dass die Polizei sich wegen dem GB bei uns war. Ein Vater hielt ein Paar Einträge für Verläumdung gegenüber seinem Sohn. Dem wollen wir wenigstens ein bisschen entgegenwirken.
 
Bringt nicht wirklich viel. Wenn man weiß, das ein Filter aktiv ist, schreibt man das Wort einfach abgewandelt. Der Mensch verstehts immer noch, der PC ist aber zu dümpel dafür.
 
Aber ein bisschen bringt es immer etwas, auch wenn es meist, wie schon gesagt, nicht allzu effektiv ist. Zudem kann man bei einen GB Eintrag die Einträge nicht editieren. D.h. wenn die Worter gelöscht wurden, kann er sie nicht mehr einfügen. (Danach wird derjenige es zwar wissen, aber da kann man nichts machen.)
Und wie gesagt, es gibt immer noch eine manuelle Kontrolle. Wir verlassen uns da nicht komplett auf so ein System. Aber da wir nicht jeden Eintrag direkt nach dem Posten überprüfen können, wollen wir eben so schon ein paar Wörterchen entfernen und gegebenfalls den Eintrag garnicht erst veröffentlichen, wenn es zuviele bösen Wörter waren.

Ich werde dann schon schauen, was ich daraus alles machen kann. Muss ich mal schauen. Ich brauche vorerst nur mal etwas, womit ich die einzelnen Wörter bekomme. So dass danach noch alle Satzzeichen, usw vorhanden sind. Und das klappt bei mir nicht so ganz.
 
Ist vielleicht eine seltsame Idee, aber du könntest mal versuchen die IP des Autors für ca. 10-20 Minuten zu speichern und dann den Eintrag für diese IP ungefiltert anzeigen lassen.

Wenn er dann das nächste mal wieder kommt (mit einer neuen IP) sieht er den zensierten Eintrag und denkt (hoffentlich), dass es von Hand entfernt wurde und deshalb nicht versucht Ausdrücke anders zu schreiben. ;-]

greetz
daddz
 
Die Idee ist vll gar nicht mal schlecht. Aber auch hier wieder das Problem mit dem Filtern. Wie bekomme ich die Wörter einzeln. Ich habe es immer noch nicht so geschafft, dass es auch wirklich klappt.
 
Mhm. Wenn da schon Einträge vorhanden sind und in diesen mit "--delete--" editiert wurde, dann weiß man ja, das gefiltert wird, ergo schreibt man anstatt "e" eben Sche!ße oder S c h e i ß e. Und schon ists Pumpe mit dem Filter. Also ich seh da keinen großen Sinn drin.

@Einzelne Wörter hole.
Könnte man dem Script sagen, dass er den Gesamtstring jeweils dann teilen soll, wenn ein Leerzeichen kommt (also ein neues Wort). Das ganze dann in ein Array steckt und den Filter auf jedes Indize im Array jagt? Keine Ahnung ob sowas klappt...nur ne Idee.
 
Das habe ich dich schon oben gemacht. Aber wenn dann direkt hinter einem dieser Wörter ein . oder sonstiges Zeichen kommt, ist das auch weg.

Und wie ich den Filter so effektiv wie möglich bekomme, werde ich dann sehen, wenn es soweit ist, dass ich die einzelnen Wörter habe.
 
lol, die tutorials.de-Filterung hat direkt mal das Problem aufgezeigt.

Dort wo jetzt "e" steht, steht eigentlich besagtes Wort, wurde also gefilter. Die beiden anderen, die jeder Mensch locker lesen kann und das Schimpfwort damit ersichtlich machen, bleiben bestehen.

@Problem
Wäre es möglich 2 Durchgänge durchzugehen. Im ersten wird der Gesamtstring genommen und nach jedem Punkt (ein vermeintlicher Satz) geteilt. Diese Teile werden dann nochmal im zweiten Durchgang nach Leerzeichen getrennt, um die Wörter rauszubekommen. Dann könnte man doch rein theoretisch den Filter drauf ansetzen?
 

Neue Beiträge

Zurück