bad word filter

Dolphon

Erfahrenes Mitglied
Moin.

Ich hab hir nen Bad word filter, und eine textfile, in der die Wörter stehen.
Das skript trägt alles in die Db ein, bis auf die Message. dort wird nix eingetragen.
Ich weiß nicht warum?

PHP:
function language_filter($message) { 
    $obscenities = @file("gb/liste.txt");
    foreach ($obscenities as $curse_word) { 
        if (stristr(trim($string),$curse_word)) { 
            $length = strlen($curse_word); 
            for ($i = 1; $i <= $length; $i++) { 
                $stars .= "*"; 
            } 
            $string = eregi_replace($curse_word,$stars,trim($string)); 
            $stars = ""; 
        } 
    } 
    return $string; 
} 

$message2 = language_filter($message);

    $sqlkommando = "INSERT INTO guestbook (id, name, email, homepage, message, ip) VALUES ('$id', '$name', '$email', '$homepage', '$message2', '$ip')";
PHP:
liste.txt:

penner
wichser 
dasdf
asdfa
dasf
.
.
.

MFG

Dolphon
 
PHP:
 if (stristr(trim($string),$curse_word)) {

Also entweder bin ich blind oder $string ist ganz einfach leer.
Er ist leer und bleibt leer und wird leer zurückgegeben. Kein Wunder, dass da nichts übertragen wird.

Vielleicht solltest du an den Anfang der Funktion noch ein

PHP:
$string = $message;

setzen.
 
stimmt habs gerade gemerkt.

Allerdings klappt es nicht ganz. Statt die schlimmern Wörter mit nem * zu versehen sidn ale Leerzeichen zu einem * geworden, und die Wörter sind geblieben.

PHP:
function language_filter($message) { 
    $obscenities = @file("gb/liste.txt");
     foreach ($obscenities as $curse_word) { 
        if (stristr(trim($message),$curse_word)) { 
            $length = strlen($curse_word); 
            for ($i = 1; $i <= $length; $i++) { 
                $stars .= "*"; 
            } 
            $message = eregi_replace($curse_word,$stars,trim($message)); 
            $stars = ""; 
        } 
    } 
    return $message; 
} 

$message2 = language_filter($message);

    $sqlkommando = "INSERT INTO guestbook (id, name, email, homepage, message, ip) VALUES ('$id', '$name', '$email', '$homepage', '$message2', '$ip')";
 
Falls du die Möglichkeit hast, [phpf]str_ireplace[/phpf] zu nutzen (PHP5) dann würde ich dies empfehlen.
 
Zurück