Badword-Filter etwas speziell...

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Badword-Filter etwas speziell...

    Hallöchen...


    Ich habe mich durchs weite Web gesucht um diesen -zugegebenermassen etwas speziellen- Filter basteln zu können. Schlussendlich bin ich im Archiv dieses Forums fündig geworden - jedenfalls zu teil. <g>

    Nun.., folgendes Script liest ein BadWord-File aus..., soweit sogut..

    PHP-Code:
    <?php
    $text 
    $_POST['text']; // Das ist der Text der untersucht werden soll
    $file implode(""file("badword.txt"));
    $match explode("|"$file);
    $error FALSE;
    foreach(
    $match as $badword) {
      if (
    eregi($badword$text)) {
        
    $error TRUE// Böses Wort gefunden
        
    break;
      }
    }
    if (
    $error) {
      echo 
    'Sagt man sowas?';
    }
    else {
      echo 
    'Alles ok!';
    }
    ?>
    Das gilt aber nur für komplette Worte die jeweils mit einem | getrennt sind. Ich aber möchte stattdessen (wie gewohnt bei mir) etwas komplizierter vorgehen doch ich weiss nicht wie.
    Folgendes schwebt mir da vor.
    Ich möchte nicht für jedes einzelne Wort (bzw. für dessen bedeutung) ein Dutzend andersgeschriebene Worte eintragen sondern die gleich in der Datei "auseinandernehmen". Ein Beispiel:
    In der Datei würde dann stehen
    play(****************|boy|mate)
    oder
    pu[sz]+[iy] (erklärung: das + bedeutet das egal wieviele Zeichen dazwischen sind es ist nicht möglich dieses zu schreiben)
    pu[sz][sz][iy] (erklärung: das doppelte [sz] bedeutet das egal wieviele s/sz dazwischen sind es ist nicht möglich dieses zu schreiben)
    welche gleichermassen mehrere Möglichkeiten verbieten würden. Wie aber, sage ich dem Script, dass es alle genannten Möglichkeiten überprüft? Genau da liegt nun mein Problem.
    Ist sowas überhaupt möglich?


    medium22

  • #2
    Hi,

    sieht doch sehr nach regexp aus. Wenn du nur eine untermenge
    der regexsyntax benutzen willst, dann wirst du wohl nicht drumherum
    kommen einen parser zu schreiben, der die untermenge in echte
    regex kompiliert und dann auf den text anwendet.

    greets
    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

    Kommentar


    • #3
      ich bin mit closure 100% einverstanden.
      du muss dan alle badwords als regex ausdruck abspeichern
      z.bs
      /schei[sß]+.*/i
      /\sarsch.*/i

      PHP-Code:
      echo preg_replace(array_map('trim',file("badwords.txt")),"****",$text); 
      Slava
      bituniverse.com

      Kommentar

      Lädt...
      X