サポート » 使い方全般 » コメントに日本語がない場合は拒否するコードの記述法が正しいか

  • http://elearn.jp/wpman/column/c20120131_01.html

    上記URLのものを使用しテストコメントをしました。

    ですが、コメントは拒否されました。
    テストしたコメントの内容は「テストコメント」です。

    恐らく『ひらがな』が含まれている場合にコメント出来るのコードだと思います。

    『ひらがな』『カナカナ』を拒否する方法がよくわからないので、自分でコードを改造し下記のコードにたどり着いたのですが記述法は正しいですか?私はPHPの知識がないのでわかりません。ご教授よろしくお願いします

    あ-ん → あ-ン に変更しただけです

    add_action( 'pre_comment_on_post', 'mytheme_pre_comment' );
    
    function mytheme_pre_comment( $comment_post_ID ) {
    	if ( isset( $_POST['comment'] ) && !preg_match( "/[あ-ン]+/u", $_POST['comment'] ) )
    		wp_die( __('<strong>ERROR</strong>: please type a comment in Japanese.') );
    }

    【元のコード】

    add_action( 'pre_comment_on_post', 'mytheme_pre_comment' );
    
    function mytheme_pre_comment( $comment_post_ID ) {
    	if ( isset( $_POST['comment'] ) && !preg_match( "/[あ-ん]+/u", $_POST['comment'] ) )
    		wp_die( __('<strong>ERROR</strong>: please type a comment in Japanese.') );
    }

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    $_POST['comment'] = 'AKB';
    $_POST['comment'] = '東京';

    は、はじかれてしまうので、意図しないはじき方が行われる可能性があります

    突っ込みどころは、満載と思いますが、コメントのリモートアクセス禁止と、英語判定を含んだコードを、先日書いてみました(あくまで、自分のコメントスパム用です)

    http://d.hatena.ne.jp/tenman/20130214/p1

    この中で、

    strlen($_POST['comment'] ) == mb_strlen( $_POST['comment'],"UTF-8") and

    で、英文判定をしてみました。

    アスキー文字は、1バイト、日本語は、3バイトが多いので、文字数に差が出なければ、英語と、簡単に判定しています。

    正規表現の難しい答えではなく、ちょっと不満が残るかもしれませんが、、、

    私はこの方法でうまくいきました。

    function mytheme_pre_comment( $comment_post_ID ) {
    
    	if ( isset( $_POST['comment'] ) && !preg_match( "/[ぁ-んァ-ヶ]+/u", $_POST['comment'] ) )
    
    		wp_die( __('<strong>ERROR</strong>: please type a comment in Japanese. 日本語を入力してください。') );
    
    }

    [ぁ-んァ-ヶ]としてみました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「コメントに日本語がない場合は拒否するコードの記述法が正しいか」には新たに返信することはできません。