英文スパムなどのアスキーコードのみの文字列を排除する方法

CGIテクニック集トップへ





概要

英文スパムなどが掲示板に書き込まれるのを防ぐために、asciiコードのみであることを検出する方法です。日本語などが含まれると検出されません。メッセージボード5で使用されています。

必用な処理

  1. PerlのPackage Jcodeを読み込む
  2. 文字列を変数に渡す
  3. Jcodeのgetcodeでその文字列を評価する
  4. 結果に応じて処理をする

サンプルコード

 use Jcode;
 
 my $string = "This is sentenses including only ascii code....";
 
 if (getcode($string) eq 'ascii') {
    print "英文スパムは受付けません。";
    exit;
 }

コードの解説

 use Jcode;

Perlのパッケージ、Jcodeを読み込みます。

 my $string = "This is sentenses including only ascii code....";

例文として$stringにHTMLの入力フォームから渡された英文が入っているとします。


 if (getcode($string) eq 'ascii') {
    print "英文スパムは受付けません。";
    exit;
 }

$stringをgetcodeメソッドに渡します。$stringの内容がasciiコードのみの場合にasciiを返します。もしasciiにマッチしたらエラーを出力します。ここの処理は状況に応じて代えてください。getcodeは以下の返り値を持ちます。

 ascii   Ascii (Contains no Japanese Code)
 binary  Binary (Not Text File)
 euc     EUC-JP
 sjis    SHIFT_JIS
 jis     JIS (ISO-2022-JP)
 ucs2    UCS2 (Raw Unicode)
 utf8    UTF8

関連するCGIテクニック

文字コード変換の仕方
文字コードの取得
メールのタイトル用にエンコードする方法
JISの長文メールの文字化けの解消
Shift_JISでの文字列サーチする方法
Perl 5.6.1でのUTF-8の処理の方法