| Badword Filter - unerlaubte Zeichen filtern |
Badword Filter - unerlaubte Wörter unkenntlich machenFast überall wo Benutzer Kommentare veröffentlichen können ist es erforderlich entsprechende "böse Wörter" unkenntlich zu machen, ehe diese der Öffentlichkeit präsentiert werden. Für diesen Zweck setzt man einen sogenannten Badword Filter ein, wie es z.B. auch im phpBuddy.eu Gästebuch der Fall ist. Der Badword Filter ist eine Liste mit verbotenen Wörter, die für gewöhnlich entweder als Array, als externe Datei oder in einer Datenbank gepflegt und erweitert werden kann. Als Amateur mag man denken das so ein Filter recht kompliziert ist. In Wirklichkeit ist es aber nicht mehr als eine einfache foreach-Schleife mit einer Zeile Code - zumindest bei relativ einfachen Filtern! Schauen wir uns mal ein Beispiel an und besprechen hinterher kurz den Code. $badword = array ( "hund", "wurst", "kochbuch", ); $text = 'Der dumme Hund hat versucht das Bild von der Wurst aus dem Kochbuch zu fressen.'; foreach ($badword as $wort) { $text = str_ireplace( $wort, str_repeat( "*", strlen( $wort ) ), $text); } echo $text; In diesem Beispiel haben wir also ein Array und die einzelnen Elemente sind die bösen Worte, die wir nicht im Text haben möchten. Wie erwähnt, kann diese Wortliste auch aus anderen Quellen, wie Dateien oder einer Datenbank kommen. Wie fast immer üblich, durchlaufen wir das Array ($badword) in einer foreach-Schleife, um die einzelnen Elemente zu verarbeiten. In der Schleife suchen wir die bösen Wörter im Text und ersetzen diese durch Sternchen. Hier noch ein Tipp, falls man eine externe Badword Liste pflegen möchte. Am besten macht man das, indem man eine beliebige Datei nimmt und je Zeile 1 Wort in die Datei schreibt. Z.B. könnte das der Inhalt von badword.txt sein: hund wurst kochbuch Statt die Datei nun mit fopen usw. zu öffnen, kann man die Datei direkt mittels file als Array einlesen: $badword = file( 'badword.txt' ); So hat man die Datei sofort als Array verfügbar, bei der jede Zeile ein Array Element repräsentiert und spart sich das umständliche öffnen und zeilenweise einlesen der Datei. Viel Spaß mit dem Badword Filter und bis zum nächsten Quick Tip, Eine live Demo und den vollständigen Code findest Du auf der phpBuddy.eu Demo Seite. |