Thread Regex für Spamfilter bei Nicht-Ascii (33 answers)
Opened by GwenDragon at 2012-06-17 18:27

topeg
 2012-06-19 18:11
#159180 #159180
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Du dekodierst des selben String mehrfach. Kein Wunder das zu einer Meldung führt.

Einmal würde ich open( my $fh, '<:utf8', $blacklist_file ) schreiben.
Oder an der Stelle: push @blacklist_entries, Encode::decode( 'utf-8', $line );
Damit ist die Daten schon gewandelt, und bedürfen keiner weiteren Aufmerksamkeit.
Dann noch "testspam":
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
sub testspam {
    my $comment = shift;
    chomp $comment;

    use Encode;
    
    $comment=Encode::decode( 'utf-8', $comment );

    read_blacklist();
        
    for my $black (@blacklist_entries) {
        if ( $comment =~ /\b\Q$black\E\b/i ) {
            return "badword_comment $black";
        }
    }
}

View full thread Regex für Spamfilter bei Nicht-Ascii