- ベストアンサー
正規表現
質問させていただきます。 文字コード「Shift-JIS」で渡ってきた文字列を 英字とスペースはOKで、 それ以外の文字列が入力されていたら、エラーいう処理を しているのですが、うまくいきません。 ご教授よろしくお願いします。 // 半角にする $kana = mb_convert_kana($_POST['kana'], "r"); if ((ereg("^[a-zA-Z]+$", trim($kana))) == false) { echo "エラーです"; } 全角スペースと半角スペースと英字はOKで、それ以外はNG としたいです。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$kana = mb_convert_kana($_POST['kana'], "rs"); if ((ereg("^[a-zA-Z ]+$", trim($kana))) == false) { echo "エラーです"; } #でどうでしょう
その他の回答 (2)
- awazak
- ベストアンサー率36% (61/165)
すいません、まちがえてました。 <? $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 ); } ?> こうだ
お礼
awazak 様 ご丁寧にありがとうございます。 今後の参考にさせていただきます。
- awazak
- ベストアンサー率36% (61/165)
英字以外にマッチします。 <? $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] ); } ?> つかれた。
お礼
BLUEPIXY 様 ありがとうございます。 思っていたような処理ができました。