禁止ワードの複数設定方法について

回答受付中の質問

禁止ワードの複数設定方法について

禁止ワードの複数設定方法について
あんQというスクリプトを利用しているのですが、荒しやスパムが酷く禁止ワードを設けたいと思いサポート掲示板にてその話題があったので早速導入してみました

http://lounge.suepon.com/data/pastlog-1164603809.html

現状、不具合なく更に何の問題もなく運営でいているのですが、正規表現等の知識も無いもので複数の禁止ワードを設定する際にかなり面倒になっています

sub antispam {
$i=index($mesnew,"馬鹿");#名前、項目名、コメントなど
if ($i>=0){ &error("ご利用どうも。");}
$i=index($mesnew,"あほ");#名前項目名、コメントなど
if ($i>=0){ &error("ご利用どうも。");}
$i=index($mesnew,"糞");#名前、url、項目名、コメントなど
if ($i>=0){ &error("ご利用どうも。");}
}
というように、記載しているのですが設定しておきたいワードがかなり多い事と、随時スパムや荒しがあった時に対処する為にスクリプト最上部に設定項目を設ける、別ファイルの禁止ワード集を読み込む等の処理をしておきたいのです

$i=index($mesnew,"馬鹿 あほ");
としても駄目で、
$i=index($mesnew,"馬鹿,あほ");
としても駄目でどうしたら良いのかも分からず、右往左往しております

できれば、
$no_wd = '馬鹿,あほ';
等というように、スクリプトの最上部に色々設定項目のある箇所で設定したいのです

色々と調べてみたのですが、限界にきてしまい投稿させて頂きました
よろしくお願い致します

投稿日時 - 2008-09-13 05:06:15

QNo.4324927

困ってます

0人が「このQ&Aが役に立った」と投票しています

回答(1

ANo.1

やりたいことは、こんな感じでしょうか

#------------ここから
#/usr/bin/perl

$ng = 'バカ,アホ,馬鹿';  #禁止ワード。カンマ区切りで設定
$nesnew = "馬鹿じゃないの";  #実際は投稿されたメッセージ。テスト用

@ng_arr = split( /,/ ,$ng );
foreach my $tmp ( @ng_arr ){
  if( $nesnew =~ /$tmp/){ 
    &error;  #禁止ワードにマッチングしたので error( )に飛ばす
  }
}
print " ご利用ありがとうございました。\n ";
exit;

sub error{
  print " 不適切な発言がありました。\n ";
  exit;
}
#------------ここまで

設定されている禁止ワードの数分、チェック対象の文字列と
マッチング処理をすればいいかと思います。
$ng に代入するところを、設定ファイルから読み込むように
変えれば、メンテも簡単かと。

投稿日時 - 2008-09-13 19:41:30

新着

あなたの愛車は今いくら?

愛車無料査定Q&A特集

ニキビケアQ&A特集

スッピンでも輝くモテ美肌に。

教えて!みんなの婚活Q&A特集

みんなの婚活体験談、秘訣がいっぱい!

お部屋探しはCHINTAI

マチから探せる新しいお部屋探し!

注目ピックアップ

OKちゃんねる

OKWaveからみなさんに質問!

OKWave2009年ランキング

話題のQ&Aをランキングでご紹介!

スタッフブログ

知って得する!お得な情報をお届け!

おすすめリンク