Böses Wort-Filter in PHP

March 25

Böses Wort-Filter in PHP

PHP ist eine Skriptsprache, die hilft Ihnen Eingabe verarbeiten und HTML-Ausgabe für Benutzer erstellen, so es Sinn macht zu verwenden, um ein "böses Wort" Filter erstellen. Einen "böses Wort" Filter in PHP zu erstellen ist ganz einfach. Sie schaffen eine "böses Wort"-Liste, trennen den Inhalt in Wörter gefiltert werden, vergleichen Sie jedes Wort anhand der Liste und entfernen oder etwas anderes für jede Übereinstimmung zu ersetzen. Die schwierigste Teil einen "böses Wort" Filter in PHP zu erstellen ist, die richtige Datenstruktur und Algorithmus wählen, so dass der Code so schnell und effizient wie möglich ausgeführt wird.

Böses Wort-Liste erstellen

Erstellen Sie eine "böses Wort"-Liste, die alle Wörter enthält, die nicht auf dem Bildschirm angezeigt werden soll. Geben Sie jedes Wort in eine Datendatei ein Wort pro Zeile. Entscheiden Sie, was Sie möchten, für jedes schlechte Wort zu ersetzen; zum Beispiel "***" oder "< >" entfernt"oder"---. " Platzieren Sie die Substitution in eine Variable später beim Filtern von Schimpfwörter verwendet werden. Zum Beispiel:

<? Php$substitute = "---";

Böses Wortliste in ein Array gespeichert

Die Liste "schlechtes Wort" vom Datenträger gelesen und in einer Datenstruktur zu speichern. Sie sollten ein Array erstellen und Speichern einer jeden "schlechtes Wort" als Element des Arrays, wie z.B.:

$bad_word [0] = "Thisbadword";$bad_word [1] = "Thatbadword";

Während diese Art von Struktur funktioniert, ist es ineffizient, da Sie das gesamte Array von "Schimpfwörter" suchen müssen für jedes Wort, die Sie anhand der Liste überprüfen. Erstellen Sie eine Hash-Tabelle für ein praktikabler Weg der Erfüllung dieser Aufgabe. Ein assoziatives Array zu entwerfen und jedes "schlechtes Wort" als des Array-Schlüssels gespeichert. Weisen Sie nichts als Wert, z. B. "1" oder "true". Um festzustellen, ob ein Wort in der Liste befindet, müssen Sie lediglich den Array-Schlüssel verweisen, anstatt das gesamte Array zu suchen. Zum Beispiel:

$bad_words = array();$fp = Fopen ("badwordsfile.txt", "R") oder sterben ("konnte nicht Schimpfwörter Datei geöffnet!");während ($word = fgets($fp)) {}$bad_words [$word] = 1;}

Ermittelt den Inhalt filtern

Abrufen der Inhalts, die Sie filtern möchten. Der Inhalt kann vom Nutzer übermittelte Kommentare aus einem HTML-Formular, ein Dokument auf der Festplatte oder sogar einer Webseite aus dem Internet sein. Speichern Sie den Inhalt in einer einzigen Variablen. Zum Beispiel:

$to_do = File_get_contents ("http://badmusiclyricswithprofanity.com & Quot;);

Wörter aus dem Inhalt zu extrahieren.

Unterteilen Sie den ungefilterten Inhalt in Wörter durch die Trennung von der Worten in die Räume, die sie teilen. Verwenden Sie die PHP-Funktion "explodieren", um die ungefilterte Zeichenfolge in ein Array von Wörtern zu konvertieren, die Sie individuell filtern können. Zum Beispiel:

$words_to_filter = explode ("", $to_do);

Schimpfw├╢rter

Das Array von Wörtern durchlaufen Sie und überprüfen Sie jedes Wort gegen das Array mit der Liste "schlechtes Wort". Wenn Sie das Array, überprüfen indem wir zu sehen, wenn der Arraywert 1 ist, wird ein Fehler generiert werden, jedes Mal, wenn Sie versuchen, ein Wort, das nicht in der Liste ist zugreifen, da der Arrayindex nicht vorhanden ist. Verwenden Sie stattdessen die "Isset"-Funktion, um festzustellen, ob das Wort im Array ist. Wenn eine Übereinstimmung vorliegt, ersetzen Sie das Wort durch die gewählten Substitution. Zum Beispiel:

Foreach ($words_to_filter als $word = > $mark) {}Wenn (isset($bad_words[$word])) {}$word = $substitute;}}

Den Text zusammenzusetzen

Setzen Sie den Text wieder in einer einzigen Variablen mit der Funktion "implodieren"--das Gegenteil von "explodieren." Sie nimmt jedes Arraywert und verbinden Sie es mit Zeichen, die Sie selbst bestimmen; in unserem Fall ist es ein Raum. Schließe mich die Ergebnisse der gefilterte Inhalte auf dem Bildschirm. Zum Beispiel:

$filtered = implode ("", $words_to_filter);Echo $filtered;? >