すべて「ひらがな」かどうか調べる

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 〜 309FHiragana
カタカナ30A0 〜 30FFKatakana
漢字4E00 〜 9FFFCJK Unified Ideographs

関連記事

スポンサーリンク

CHARINDEX関数 文字列中の文字列を検索する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る