• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Badwords

TecEye

New member
Ausgangssituation ist ein Gästebuch wo ich schimpfwörter auskommentieren will die man zuvor in der DB gespeichert hat
PHP:
$badwords 		= explode(",", $navi_set_now_[15]);
$text 		= str_replace($badwords, "***", $text);
problem ist jetzt die groß und kleinschreibung. In der Liste steht zB "Penner" wenn aber einer "PeNnEr" schreibt gehts durch klar.
mach ich zb Text und sucharray alles kleinbuchstaben, findet ers zwar, aber der Ursprungstext ist ja dann alles klein und nicht orginal :( hat da jemand n Denkanstoß von euch, oder hat sich da jm schonmal mit befasst?
 
Ich bin der Meinung, dass man solche Filter sehr einfach umgehen kann und sie deswegen nicht wirklich sinnvoll sind.
 
Ich bin der Meinung, dass man solche Filter sehr einfach umgehen kann und sie deswegen nicht wirklich sinnvoll sind.

ja da kommen wir schon zum Problem, was ist mit "Pen ner", da gehts schief, aber ich kann ja schlecht leerzeichen extrahieren :(

PS.: Irgendwie ist das Forum hier voller Bugs, wir momentan hier dran gearbeitet?
 
Noch schlimmer finde ich sowas wie "Lappennerz" (mir fällt gerade nicht besseres ein, aber du weißt hoffentlich, was ich meine), aus dem denn "Lap***z" wird.
 
ok da kann man ja vor und hinter dem Badword n leerzeichen setzen, sodass er nur eigenständige worte implementiert
 
stimmt, hmmmm echt verzwickt. Oder vor der prüfung ein leerzeichen vor und hinter dem prüfstring und danach wieder trim()
 
gibts für arrays eigentlich auch so ne art SOUND LIKE wie bei mysql, falls Legastheniker zB. "Pener" schreiben
 
Soweit ich mich damit beschäftigt habe, sind diese Funktionen aber nur für die Englische Sprache geeignet.

Zu den Leerzeichen: und was ist mit
?

PS: Zum Glück hat das Forum sowas nicht... da könnten wir uns ja gar nicht über das Thema unterhalten. ;)
 
soundex schon, levenshtein ist ja nur string differenz, also unabhängig von der sprache.
und prinzipiell muss man sowas mit regex machen und alle \W aus einem compare string entfernen
 
Dir sind wohl die Satzzeichen ausgegangen, hier haste ein paar, sollten für ein paar Posts reichen:
......................................
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
?????????????????????
 
PHP kann doch reguläre Ausdrücke? Damit kan man Wortgrenzen finden.
PHP:
function badWords($t) {
	$badwords = array('penner');
	$pattern = implode('|', $badwords);
	echo '<pre>', $pattern ,' </pre>';
	return preg_replace('/\b('. $pattern . ')\b/i', '****', $t);
}

Wobei aber Tricksereien damit nicht verhindert werden können.
 
Ein Gästebuch muss doch spammer-technisch eh moderiert sein, wozu also der badword-filter...
 
Naja, Spammer würde ich nicht versuchen mit einer Wortliste abzuwehren, das klappt nicht. Eine sinnvolle Zeitverzögerung hält dagegen 99% der Spamversuche ab.
Aber für jemanden, der mit möglichst wenig Moderation Kommentare halbwegs jugendfrei halten will oder muss, kann sowas hilfreich sein. Aber ganz ohne Handarbeit geht es natürlich nicht.
 
Zurück
Oben