[PHP-users 12322] Re: PHPによる全角判定
おかむら
php-users@php.gr.jp
Tue, 24 Dec 2002 13:42:17 +0900
> if( strlen($moji) > mb_strlen($moji) ){
> 文字種類は無視して、全角文字か半角文字かを判定するだけなら、
> これでもいいかと思っていたのですが。。
EUCの場合、*半角カナは2バイト*なので、
半角カナが混入してないという前提がある場合のみ有効です。
EUCに限っていえば、
英数半角以外の文字のアスキーコードは必ず0x8E以上のみで構成されるので
正規表現で判定する方法も。
if( preg_match( '/[\x00-\x8E]/', $s ) ){ print '半角があるよ;_;/'; }
参考:EUCのコードの並び
1文字目 2文字目 3文字目
--------- --------- --------- ---------
英数 0x00-0x7F
半角カナ 0x8E 0xA1-0xFE
全角1 0xA1-0xFE 0xA1-0xFE
全角2 0x8F 0xA1-0xFE 0xA1-0xFE
私はwebで使う場合は、文字種のチェックをしなくていいなら、
mb_convert_kana() で、許可しない文字も許可する文字に変えてしまいます。
------- ------- ------- ------- ------- ------- ------- -------
おかむら
okamura@ntciis.ne.jp