ASCII のみのコメントを拒否する 方法を以前紹介していて、これを使用している方もいるかと思うのですが、これは MT のソースをいじる必要があるためバージョンアップなどで問題がありました。
ということで MT3.1 の CommentFilter コールバックを利用して、ASCII or Latin-1 のコメントを拒否またはモデレートするプラグイン MTBanASCII を作成しました。
インストールは plugins ディレクトリに mt-ban-ascii.pl を置くだけです。our $Method = "moderate";
でモデレート、"deny" にすると投稿を拒否します。
mt-plugins.org にも submit しました。
UPDATE: バージョン 0.90 では、日本語を含むすべてのコメントを deny または moderate してしまう不具合がありました。0.91 からダウンロードして置き換えてください。ただし perl 5.8 以上でないと動作しません。(Laitn-1 文字列かどうかをバイト列で判別するのは不可能のため)
昔こんなの作ったんですが、なるほどModerateにもできますね。
http://as-is.net/blog/archives/000902.html
[\x00-\xff]?
[\x00-\x7f]?
\x00-\x7f だとASCIIで、\x00-\xff だと Latin-1 も含むという認識で書いたのですがこれだと全部マッチしてしまいますね。utf8::decode() が直前に必要でした。
しかしそれだと Perl 5.8 が必要になってしまう。。
バイト列でマッチできるように調整します。
ってバイト列だけでlatin-1かどうか判別するのは不可能でした。UTF-8 な文字列なら無理やりlatin-1として読むことができるはずだから。というわけでperl5.8以上が必要になります。
Posted by: miyagawa on January 25, 2005 04:21 PMスパマーにコメントに失敗したことを明示的に認識させるために、CommentThrottleFilterを使うというのはどうでしょう。DBに触る回数も減ります。
Posted by: (o) on January 26, 2005 06:29 AM参考になりました。。
ありがとう♪