現在"PHPBB"というフォーラムスクリプトを運営しております
しかし、このスクリプトを狙った海外からのスパマーが多く
困っております
そこで、投稿の際にひらがなが含まれない
投稿はブロックするようにしました
記述は以下のようになります
# check word
$chkmsg = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
if (strlen($chkmsg) != 0) {
if (mb_convert_kana($chkmsg, "C") == $chkmsg) {
message_die(GENERAL_MESSAGE, "ひらがなが見当たりません<br>詳細は master にお問合せください");
}
$chkword = @file("chkword.txt");
foreach ($chkword as $line) {
$line = str_replace("\r", "" , $line);
$line = str_replace("\n", "" , $line);
if (strlen($line) == 0) { continue; }
if (substr_count($chkmsg, $line)) { $chkresult = true; }
}
if ($chkresult) {
message_die(GENERAL_MESSAGE, "禁止ワードが含まれています<br>詳細は master にお問合せください");
}
}
#
これによって、本文にひらがなが含まれない投稿はブロックできるようになりましたが、
わずかにひらがなを含む投稿も2~3日に一件ほどあるので
条件を変更し、”本文の50%以上が英語の書き込みを拒否”という形にしたいのですが
これは可能でしょうか?
もし、可能であればどのように記述すればよいのでしょうか?
ちなみにこのフォーラムのURLはhttp://www.be-emotion.com/seo/forum/です
よろしくお願いします
No.2ベストアンサー
- 回答日時:
$num1 = strlen($chkmsg);
$num2 = mb_strlen($chkmsg);
この2つの数の違いから・・・なんてどうでしょうか。
No.1
- 回答日時:
未検証なので、とりあえず思いつく処理として。
$s_strを元の文字列とします。
$d_strに正規表現置換を使って$s_strから(大文字・小文字問わず)半角英字を削除する。
$s_strの文字数と$d_strの文字数を比較して、$s_strの文字数が$d_strの文字数の2倍以上の大きさであれば、$s_strに含まれる半角英字は全体の1/2以下である。
という感じでしょうか。
考慮すべき点としては、その他の半角(1バイト)記号でしょうかね。
上記の処理だと、改行や半角記号も日本語文字としてカウントされてしまうので、それらを削除したものを$s_strとしなければならないかも。
まぁこのへんはどこまでやるか次第でしょうけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- PHP PHPでテキストファイルに保存した時の改行問題 1 2022/11/19 15:07
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
全角英数文字が嫌われる理由を...
-
携帯電話の相手の電話番号にメ...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
メッセージボックスで1025文字...
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
VBAでCSVをExcelに取り込む時に...
-
正規表現でシングルクォーテー...
-
preg_replaceがうまくできない
-
texのchapterが改行される
-
C++で空Enterの入力を判...
-
正規表現で特定のHTMLタグのク...
-
LaTeX: captionの中で改行した...
-
SJIS→UTF-8変換後の文字化けに...
-
PHPでexec関数の記述方法について
-
【PHP】fgetsした際に「CR/LF」...
-
変数にHTMLを代入する場合
-
delphi でのコード上でTab を入...
-
グレープシティのSPREAD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の入力で横バー上段、中断...
-
メッセージボックスで1025文字...
-
Excel関数「COUNTIF」で”文字”...
-
全角括弧と全角読点の間隔を狭...
-
半角記号、全角記号を含む正規...
-
エクセルのCOUNTIFが正しくカウ...
-
XMLのタグ名の禁則文字
-
文字列中の両丸括弧を取り除くV...
-
VBScriptである文字列に半角文...
-
全角英数文字が嫌われる理由を...
-
記号は半角と全角どちらがよい...
-
Excel2002 一桁数字だけ全角に置換
-
エクセルでの漢字、カタカナ、...
-
特定の文字を簡単な操作で半角...
-
Replace関数は文字数の制限ある...
-
VBAで英数字入力チェックしたい。
-
IT企業の技術屋にとって全角英...
-
2つ以上の連続する空白文字を除去
-
Accessの文字数を調べたい
-
全角半角変換 C++/CLI
おすすめ情報