- ベストアンサー
正規表現でスパム投稿をブロックしたい
現在↓このような正規表現でアルファベット及び記号をブロックし、なるべく日本語が含まれていないと、スパム扱いになるよういしました。 //SPAMフィルター function mb_check($str){ if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str)){ return False; }else{ return True; } } しかし、これでも、スパム書き込み来ることがあるので、 これにあらたに ”httpという文字列が含まれていたら”という条件を 足すことにしました。 しかし、その記述の方法がよく分かりません。 これに、”httpという文字列が含まれていたら”とういう条件を足すには どのように記述すればよいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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 ) ){ とするのはどうでしょうか。
その他の回答 (1)
- wp_
- ベストアンサー率54% (132/242)
単純に”httpという文字列が含まれていたら”という条件でしたら正規表現に組み込むよりstrposを使ったほうが高速です。 if(ereg("^[\x41-\x5A|\x61-\x7A|\x30-\x3F|\x21-\x2F|[:space:]]+$",$str) || strpos($str,"http") !== false) return false; else return true;
お礼
回答ありがとうございます。 strposという関数があるのですね。 いろいろ試してみます。
お礼
回答ありがとうございます。 正規表現記述内に埋め込むことばかりを考えていて ifの中に埋め込むことは考えていませんでした。 目からうろこです。 参考になりました。