Feinheiten eines Bad Word Filters

visionsign

Mitglied
Hallo Community,

erstmal sorry, dass ich schon wieder eine Frage stelle.
Ich habe hier einen funktionierenden Bad Word Filter gecodet.

Dieser muss allerdings noch etwas verfeinert werden, und zwar.
Steht ein Wort wie "barsch" im Text, wird es auch vom Badword Filter gekillt, das soll so natürlich nicht sein, ebenso wie , oder #.

Hier jetzt der Code des Filters ohne diese Funktionen:

PHP:
 <?
   //db connect
 	@mysql_connect("localhost","root","") or die("Der Datenbankbenutzer, das Passwort oder der Host sind nicht korrekt bzw. nicht definiert!");
   @mysql_select_db("test_bernhard") or die("Der Datenbankname ist nicht korrekt oder nicht definiert!");
 
   //db badword fitler
  function badword_filter($ersetzen){
   $badword_query = mysql_query("SELECT * FROM BADWORDS");
   while ($badword_ausgabe = mysql_fetch_array($badword_query))
   {
 	  //wenn kein REPLACE gesetzt ist, wird automatisch ein "zensiert" an die stelle des badwords geschrieben
 	  if ($badword_ausgabe["REPLACE"] == "")
 	  {
 	   $badword_ausgabe["REPLACE"] = "zensiert";
 	  }
 	  //markiert automatisch ersetzte wörter und fügt ein [] ein
 	  $markiert = "<span style=\"color: #A4A4A4;\">[<strong>".$badword_ausgabe["REPLACE"]."</strong>]</span>";
 	  
 	  //prüft, ob leere einträge in der datenbank vorhanden sind
 	  if ($badword_ausgabe["WORD"] != "")
 	  {
 	  //Ersetzt das Badword durch "zensiert", oder durch denn Inhalt von "REPLACE" soweit dieses deiniert ist
 		$ersetzen = eregi_replace($badword_ausgabe["WORD"], $markiert, $ersetzen);
 	  }
   }
   return $ersetzen;
 }
 ?>
 <html>
 <head>
 <title>Badword Filter</title>
 </head>
 <body>
 <h2><div align="center"><strong>Badword Filter Modul für xxx.xxx.xx</strong></div></h2>
 <br><br>
 <? echo badword_filter("Dies ist einer kleiner Test, , wichser, hurensohn. Außerdem ist PHP e"); ?>
 <br><br>
 Zensierte oder automatisch geänderte Begriffe werden folgendermaßen dargestellt: 
 <span style="color: #A4A4A4;">[<strong>automatisch geändert</strong>]</span>
 </body>
 </html>
 
soweit ich das ganze verstehe, benötigt man hierzu Reguläre Ausdrücke.
, das bedeutet, dass die Zeile:

PHP:
 $ersetzen = eregi_replace("^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+.([a-zA-Z0-9-]{2,4})$".$badword_ausgabe["WORD"], $markiert, $ersetzen);

an der besagten stelle diese methode benötigt. Hier habe ich mal die regulären Ausdrücke für das validieren einer EMail Adresse beispielhaft dargestellt.
NUR

wie lauten diese für den gewünschten Badword Filter!
 
Zurück