すべて「ひらがな」かどうか調べる
UTF-8
if(preg_match("/^[ぁ-ゞ]+$/u",$str)){ echo "ひらがなのみです"; }else{ echo "ひらがなのみではありません"; }
UTF-8 コード表記
if(preg_match("/^(¥xe3¥x81[¥x81-¥xbf]|¥xe3¥x82[¥x80-¥x9e])+$/",$str)){ echo "ひらがなのみです"; }else{ echo "ひらがなのみではありません"; }
UTFでは、修飾子『 u 』をつけないと、「む」を認識できないことがあります。
(修飾子『 i 』などをあわせてつけたとき)
これ以外にも『ゔ、ゕ、ゖ』があります。
(小文字の『か』『け』。環境によっては表示できません。)
EUC-JP
if(preg_match("/^[ぁ-ん゛ゝゞ]+$/",$str)){ echo "ひらがなのみです"; }else{ echo "ひらがなのみではありません"; }
EUC-JP コード表記
if(preg_match("/^(¥xa4[¥xa1-¥xf3]|¥xa1[¥xb5¥xb6¥xab])+$/",$str)){ echo "ひらがなのみです"; }else{ echo "ひらがなのみではありません"; }
Shift-JIS コード表記
if(preg_match("/^(¥x82[¥x9f-¥xf1]|¥x81[¥x4a¥x54¥x55])+$/",$str)){ echo "ひらがなのみです"; }else{ echo "ひらがなのみではありません"; }
Shift-JIS では、文字の範囲指定をすると下記のようなエラーが出ます。
Warning: Compilation failed: range out of order in character class at offset 1
UTF-8 EUC-JP Shift-JIS共通
if(preg_match("/^(¥x82[¥x9f-¥xf1]|¥x81[¥x4a¥x54¥x55]|". "¥xa4[¥xa1-¥xf3]|¥xa1[¥xb5¥xb6¥xab]|". "¥xe3¥x81[¥x81-¥xbf]|¥xe3¥x82[¥x80-¥x9e])+$/",$str)){ echo "「ひらがな」のみです"; }else{ echo "「ひらがな」のみではありません"; }
文字コード表からUTF部分を抜粋すると文字コードは以下です。
Unicode S-JIS JIS EUC-JP 文字 0x3041 0x829F 0x2421 0xA4A1 ぁ 0x3042 0x82A0 0x2422 0xA4A2 あ 0x3043 0x82A1 0x2423 0xA4A3 ぃ 0x3044 0x82A2 0x2424 0xA4A4 い 0x3045 0x82A3 0x2425 0xA4A5 ぅ 0x3046 0x82A4 0x2426 0xA4A6 う 0x3047 0x82A5 0x2427 0xA4A7 ぇ 0x3048 0x82A6 0x2428 0xA4A8 え 0x3049 0x82A7 0x2429 0xA4A9 ぉ 0x304A 0x82A8 0x242A 0xA4AA お 0x304B 0x82A9 0x242B 0xA4AB か 0x304C 0x82AA 0x242C 0xA4AC が 0x304D 0x82AB 0x242D 0xA4AD き ......... 0x308C 0x82EA 0x246C 0xA4EC れ 0x308D 0x82EB 0x246D 0xA4ED ろ 0x308E 0x82EC 0x246E 0xA4EE ゎ 0x308F 0x82ED 0x246F 0xA4EF わ 0x3090 0x82EE 0x2470 0xA4F0 ゐ 0x3091 0x82EF 0x2471 0xA4F1 ゑ 0x3092 0x82F0 0x2472 0xA4F2 を 0x3093 0x82F1 0x2473 0xA4F3 ん 0x309B 0x814A 0x212B 0xA1AB ゛(濁点) 0x309C 0x814B 0x212C 0xA1AC ゜(半濁点) 0x309D 0x8154 0x2135 0xA1B5 ゝ(平仮名繰返し記号) 0x309E 0x8155 0x2136 0xA1B6 ゞ(平仮名繰返し記号濁点)
UTF以外は並びが ちょっと違います。
S-JIS JIS EUC-JP Unicode 文字 0x8154 0x2135 0xA1B5 0x309D ゝ(平仮名繰返し記号) 0x8155 0x2136 0xA1B6 0x309E ゞ(平仮名繰返し記号濁点) 0x814A 0x212B 0xA1AB 0x309B ゛(濁点) 0x829F 0x2421 0xA4A1 0x3041 ぁ 0x82A0 0x2422 0xA4A2 0x3042 あ 0x82A1 0x2423 0xA4A3 0x3043 ぃ 0x82A2 0x2424 0xA4A4 0x3044 い 0x82A3 0x2425 0xA4A5 0x3045 ぅ 0x82A4 0x2426 0xA4A6 0x3046 う 0x82A5 0x2427 0xA4A7 0x3047 ぇ 0x82A6 0x2428 0xA4A8 0x3048 え 0x82A7 0x2429 0xA4A9 0x3049 ぉ 0x82A8 0x242A 0xA4AA 0x304A お 0x82A9 0x242B 0xA4AB 0x304B か 0x82AA 0x242C 0xA4AC 0x304C が 0x82AB 0x242D 0xA4AD 0x304D き ......... 0x82EA 0x246C 0xA4EC 0x308C れ 0x82EB 0x246D 0xA4ED 0x308D ろ 0x82EC 0x246E 0xA4EE 0x308E ゎ 0x82ED 0x246F 0xA4EF 0x308F わ 0x82EE 0x2470 0xA4F0 0x3090 ゐ 0x82EF 0x2471 0xA4F1 0x3091 ゑ 0x82F0 0x2472 0xA4F2 0x3092 を 0x82F1 0x2473 0xA4F3 0x3093 ん
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かどうか調べる
- すべて漢字かどうか調べる
- すべてカタカナかどうか調べる
スポンサーリンク