[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