• 締切済み

PHPでの全角・半角判定

メールアドレスのチェックのため、 ゆるめの判定でとりあえず全角か半角か判定したいのですが、 どうすればできますでしょうか? ちなみに以下の文字もRFC的にはOKのため、 許可したいと思っております。 【_.-+/?&$%|!#~^'】

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

0x80以上をチェックすれば文字コードに関係なく判定できますね。 0x7FもDELコードなので0x7F-0xFFまでをチェックすればとりあえず2バイト文字はないということになります。 preg_match("/[\x7F-\xFF]/",$str)

mac_mini
質問者

補足

strlenとmb_strlenで違いがある場合は、 全角文字であると判断した方が簡単そうなため、 それで対応いたしました。

回答No.1

全角というか、日本語関連の全角文字があるかというチェックなら 文字コード次第だったりしますが、EUCだと正規表現で 0xA1 ~ 0xFE があるかどうかチェックするだけでも良さそうな気がします。 ※半角カナは考慮してません。 if (preg_match("/[\xA1-\xFE][\xA1-\xFE]/",$str)){ // 全角有り }else{ // 全角無し }

参考URL:
http://euc.jp/i18n/charcode.ja.html
mac_mini
質問者

補足

strlenとmb_strlenで違いがある場合は、 全角文字であると判断した方が簡単そうなため、 それで対応いたしました。

関連するQ&A