• ベストアンサー

英文のみの投稿を拒否したい

こんにちは。初めて利用いたします。 phpの問い合わせフォームプログラムで「英文のみの投稿を拒否したい」のですがうまくいきません。 以下の条件式をいれてエラーチェックをしてみましたが、改行コードがあったり、:があったりするとエラーとならないです。 $str = $_POST['FORM']['MESSAGE'] ; if (preg_match("/^[0-9A-Za-z]*$/", $str)) { echo die("半角英数字のみは送信できません"); perlでの条件式は、検索で以下のような条件式で対応が出来ると発見はしました。 if ($in{'message'} !~ /[\x81-\xFC]/) phpでは、この条件式をどのようにすればよいのか? がわからないので、質問いたしました。 内容に不足している事項がございましたらご指摘下さい。 よろしくお願いいたします。

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

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

英文と言ってもアルファベットだけに限らず、半角スペースやコンマやセミコロンがあるだけではなく、記号もあると思います。 preg_match("/^[0-9A-Za-z]*$/", $str)  ゆるいところで言うと、問い合わせフォームでの内容において、ひらがなの入っていない日本語文はないとして、 if( preg_match('/[ぁ-ん]/',) == '0' ) echo die("ひらがながはいっていない"); とかがあります。

hihin2003
質問者

お礼

Suziさん 早速の回答ありがとうございます。 条件式をいれて動作確認いたしました。 エラーチェック無事できました!! とっても助かりました。

その他の回答 (1)

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

ちょっとテストできる環境がないのですが、preg系はPerl互換の正規表現が使えるので、 if (!preg_match("/[\x81-\xFC]/", $str)) { は通りませんかね? 2バイト文字で使用される0x81~0xFCのコードが入っているか見ているだけなので、 No.1さんの回答とやってることは同じようなものかなって思いますけど。 (実際には使用される漢字コードによって変わるのでNo.1さんの回答の方がよろしいかと)

hihin2003
質問者

お礼

ts3m-ickwさん 回答ありがとうございます。 >(実際には使用される漢字コードによって変わるのでNo.1さんの回答の方がよろしいかと) これで出来ました。

関連するQ&A