すべて漢字かどうか調べる
UTF-8 単純な方法 (完全ではありません)
if(preg_match("/^[一-龠]+$/u",$str)){ echo "漢字のみです"; }else{ echo "漢字のみではありません"; }
UTF-8 単純な方法 (テキストエディタによっては文字化けします)
if(preg_match("/^[一-龥-I]+$/u",$str)){ echo "漢字のみです"; }else{ echo "漢字のみではありません"; }
UTF-8 コード表記
if(preg_match("/^(¥xe4[¥xb8-¥xbf][¥x80-¥xbf]|[¥xe5-¥xe9][¥x80-¥xbf][¥x80-¥xbf]|¥xef¥xa4¥xa9|¥xef¥xa7¥x9c|¥xef¥xa8[¥x8e-¥xad])+$/u",$str)){ echo "漢字のみです"; }else{ echo "漢字のみではありません"; }
UTFでは、修飾子『 u 』をつけないと、いくつかの文字を認識できないことがあります。
(修飾子『 i 』などをあわせてつけたとき)
EUC-JP コード表記
if(preg_match("/^([¥xb0-¥xf4][¥xa1-¥xfe]|[¥xf9-¥xfc][¥xa1-¥xfe]|¥x8f[¥xb0-¥xf4][¥xa1-¥xfe])+$/",$str)){ echo "漢字のみです"; }else{ echo "漢字のみではありません"; }
EUC-JP では、文字の範囲指定をすると正しく認識できません。
Shift-JIS コード表記
if(preg_match("/^([¥x88-¥x9f][¥x40-¥xfc]|[¥xe0-¥xfb][¥x40-¥xfc]|¥xfc[¥xa2-¥xee])+$/",$str)){ echo "漢字のみです"; }else{ echo "漢字のみではありません"; }
UTF-8 EUC-JP Shift-JIS共通
if(preg_match("/^(¥xe4[¥xb8-¥xbf][¥x80-¥xbf]|[¥xe5-¥xe9][¥x80-¥xbf][¥x80-¥xbf]|¥xef¥xa4¥xa9|¥xef¥xa7¥x9c|¥xef¥xa8[¥x8e-¥xad]|". "[¥xb0-¥xf4][¥xa1-¥xfe]|[¥xf9-¥xfc][¥xa1-¥xfe]|¥x8f[¥xb0-¥xf4][¥xa1-¥xfe]|". "[¥x88-¥x9f][¥x40-¥xfc]|[¥xe0-¥xfb][¥x40-¥xfc]|¥xfc[¥xa2-¥xee])+$/",$str)){ echo "漢字のみです"; }else{ echo "漢字のみではありません"; }
文字コード表からUTF部分を抜粋すると文字コードは以下です。
Unicode S-JIS JIS EUC-JP 文字 0x4E00 0x88EA 0x306C 0xB0EC 一 0x4E01 0x929A 0x437A 0xC3FA 丁 ......... 0x9F9D 0xE273 0x6354 0xE3D4 龝 0x9FA0 0xEA9E 0x737E 0xF3FE 龠 0x9FA0 0xEA9E 0xF3FE 0x737E 龠 0x9FA1 0x446D60 0x8FEDE0 龡 0x9FA2 0x446D61 0x8FEDE1 龢 0x9FA3 0x446D62 0x8FEDE2 龣 0x9FA4 龤 0x9FA5 0x446D63 0x8FEDE3 龥 0xF929 0xFAE0 FAC6 0xF9DC 0xFBE9 FCCF 0xFA2B 0xFBF7 FCDD 0xFA2C 0xFBF9 FCDF 0xFA2D 0xFC49 FCEC I
UTF以外は並びが ちょっと違います。
S-JIS JIS EUC-JP Unicode 文字 0x889F 0x3021 0xB0A1 0x4E9C 亜 0x88A0 0x3022 0xB0A2 0x5516 唖 0x88A1 0x3023 0xB0A3 0x5A03 娃 0x88A2 0x3024 0xB0A4 0x963F 阿 0x88A3 0x3025 0xB0A5 0x54C0 哀 ......... 0xEA9E 0x737E 0xF3FE 0x9FA0 龠 0xEA9F 0x7421 0xF4A1 0x582F 堯 0xEAA0 0x7422 0xF4A2 0x69C7 槇 0xEAA1 0x7423 0xF4A3 0x9059 遙 0xEAA2 0x7424 0xF4A4 0x7464 瑤 0xEAA3 0x7425 0xF4A5 0x51DC 凜 0xEAA4 0x7426 0xF4A6 0x7199 熙
ここからわかるのが、Unicodeは画数の少ない『一』から、画数順になっているのに対し、
それ以外の文字コードは50音順の『亜』から始まっています。
UTC(Unicode Technical Committee)の定義したUnicode文字のブロックの範囲は以下です。
しかしこの範囲以外にも漢字があります。
文字の種類 | ブロックの範囲(16進表記) | ブロック名 |
---|---|---|
ひらがな | 3040 〜 309F | Hiragana |
カタカナ | 30A0 〜 30FF | Katakana |
漢字 | 4E00 〜 9FFF | CJK Unified Ideographs |
関連記事
- Smarty2をPHP7に対応させる方法(The /e modifier is no longer supported Smarty_Compiler.class.php, line 270)
- 全て携帯絵文字のみかどうかを調べる
- PHPの正規表現
- 携帯電話のメールアドレスか調べる
- 正しい電話番号か調べる
- 正しい郵便番号か調べる
- メールアドレスかどうか調べる
- 正しいURLかどうか調べる
- すべてカタカナかどうか調べる
- すべて「ひらがな」かどうか調べる
スポンサーリンク