- 締切済み
禁止ワードの複数設定方法について
あん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 = '馬鹿,あほ'; 等というように、スクリプトの最上部に色々設定項目のある箇所で設定したいのです 色々と調べてみたのですが、限界にきてしまい投稿させて頂きました よろしくお願い致します
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- tsaito
- ベストアンサー率68% (17/25)
やりたいことは、こんな感じでしょうか #------------ここから #/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 に代入するところを、設定ファイルから読み込むように 変えれば、メンテも簡単かと。