• ベストアンサー

正規表現

質問させていただきます。 文字コード「Shift-JIS」で渡ってきた文字列を 英字とスペースはOKで、 それ以外の文字列が入力されていたら、エラーいう処理を しているのですが、うまくいきません。 ご教授よろしくお願いします。 // 半角にする $kana = mb_convert_kana($_POST['kana'], "r"); if ((ereg("^[a-zA-Z]+$", trim($kana))) == false) {   echo "エラーです"; } 全角スペースと半角スペースと英字はOKで、それ以外はNG としたいです。 よろしくお願いします。

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

$kana = mb_convert_kana($_POST['kana'], "rs"); if ((ereg("^[a-zA-Z ]+$", trim($kana))) == false) {   echo "エラーです"; } #でどうでしょう

noname#135631
質問者

お礼

BLUEPIXY 様 ありがとうございます。 思っていたような処理ができました。

その他の回答 (2)

  • awazak
  • ベストアンサー率36% (61/165)
回答No.2

すいません、まちがえてました。 <? $hiragana='(?:\x82[\x9F-\xF1])'; $hannkaku_katakana='([\xA6-\xDF])'; $zennkaku_katakana='(?:\x83[\x40-\x96])'; $kanji='[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'; if(preg_match("/({$hiragana}|{$hannkaku_katakana}|{$zennkaku_katakana}|{$kanji})/",$kana,$match)){ echo "ERROR<br />"; print_r( $match ); } ?> こうだ

noname#135631
質問者

お礼

awazak 様 ご丁寧にありがとうございます。 今後の参考にさせていただきます。

  • awazak
  • ベストアンサー率36% (61/165)
回答No.1

英字以外にマッチします。 <? $hiragana='(?:\x82[\x9F-\xF1])'; $hannkaku_katakana='([\xA6-\xDF])'; $zennkaku_katakana='(?:\x83[\x40-\x96])'; $kanji='[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC]'; if(preg_match_all("/({$zennkaku_hiragana}|{$hannkaku_katakana}|{$zennkaku_katakana}|{$kanji})/",$kana,$match)){ echo "ERROR<br />"; print_r( $match[0] ); } ?> つかれた。

関連するQ&A