• ベストアンサー

正規表現でスパム投稿をブロックしたい

現在↓このような正規表現でアルファベット及び記号をブロックし、なるべく日本語が含まれていないと、スパム扱いになるよういしました。 //SPAMフィルター function mb_check($str){ if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str)){   return False;  }else{   return True;  } } しかし、これでも、スパム書き込み来ることがあるので、 これにあらたに ”httpという文字列が含まれていたら”という条件を 足すことにしました。 しかし、その記述の方法がよく分かりません。 これに、”httpという文字列が含まれていたら”とういう条件を足すには どのように記述すればよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

ereg('html', $str ) を足して if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str)){    ↓ if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str) || ereg('html', $str ) ){ とするのはどうでしょうか。

yuzuru0024
質問者

お礼

回答ありがとうございます。 正規表現記述内に埋め込むことばかりを考えていて ifの中に埋め込むことは考えていませんでした。 目からうろこです。 参考になりました。

その他の回答 (1)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

単純に”httpという文字列が含まれていたら”という条件でしたら正規表現に組み込むよりstrposを使ったほうが高速です。 if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str) || strpos($str,"http") !== false)  return false; else  return true;

参考URL:
http://jp2.php.net/manual/ja/function.strpos.php
yuzuru0024
質問者

お礼

回答ありがとうございます。 strposという関数があるのですね。 いろいろ試してみます。

関連するQ&A

専門家に質問してみよう