problem bei badwortfilter

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

  • problem bei badwortfilter

    So, hab mal hier im Forum gesucht, aber die badwortfilter funktionieren irgendwie net, dann ahbe ich auf einer anderen Seite einen(fast) funtkionierenden badwortfilter gefunden. Das Problem ist nur, dass er aus einer Liste immer nur das letzte Wort zensiert. z.B:
    ich habe in meiner badword.db:
    aarsch
    ficken

    Dann habe ich einen Text (aus einer mysql-DB), der wie folgt lautet
    aarsch ficken

    Dann tut er aber immer nur das letzte Wort zensieren (in diesem Beispiel "ficken"). Liegt das viell. daran, dass ich meinen text aus einer mysql-Db lade oder woran liegt das?

    Hier mal die funktion:

    PHP-Code:
    function bad($string) {
        
    $obscenities = @file("badword.db");
        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

    Forumregeln!

    Gute PHP-(tutorial-)Seiten

  • #2
    Also ich würd mal sagen unter dem foreach fehlt das hier:
    PHP-Code:
    $curse_word=trim($curse_word); 
    Warum

    Das trim() um die varable $string kann man imho auch weglassen und statt der for schleife kannst du auch
    PHP-Code:
    $stars=str_pad($stars,$length,'*'); 
    schreiben.

    Kommentar


    • #3
      Re: problem bei badwortfilter

      Original geschrieben von davidovich
      PHP-Code:
                  for ($i 1$i <= $length$i++) {
                      
      $stars .= "*";
                  }
                  
      $string eregi_replace($curse_word,$stars,trim($string));
                  
      $stars ""
      $stars auf diese weise jedes mal neu mit for-schleife aufzubauen, ist auch nicht so der hit ...

      PHP-Code:
      $stars ="***********************************************"// schon vor foreach-schleife definieren

      $string eregi_replace($curse_wordsubstr($stars0strlen($curse_word)), $string); 
      erscheint mir einfacher und effektiver ...
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Vielen Dank, jetzt funktionierts.

        Forumregeln!

        Gute PHP-(tutorial-)Seiten

        Kommentar

        Lädt...
        X