すべてカタカナかどうか調べる

UTF-8

if(preg_match("/^[ァ-ヾ]+$/u",$str)){
  echo "カタカナのみです";
}else{
  echo "カタカナのみではありません";
}

UTF-8 コード表記

if(preg_match("/^(¥xe3¥x82[¥xa1-¥xbf]|¥xe3¥x83[¥x80-¥xbe])+$/u",$str)){
  echo "カタカナのみです";
}else{
  echo "カタカナのみではありません";
}

UTFでは、修飾子『 u 』をつけないと、「ダ」を認識できないことがあります。
(修飾子『 i 』などをあわせてつけたとき)

EUC-JP コード表記

if(preg_match("/^(¥xa5[¥xa1-¥xf6]|¥xa1[¥xb3¥xb4¥xbc])+$/",$str)){
  echo "カタカナのみです";
}else{
  echo "カタカナのみではありません";
}

EUC-JP では、文字の範囲指定をすると正しく認識できません。

Shift-JIS

if(preg_match("/^[ァ-ヶヽヾー]+$/",$str)){
  echo "カタカナのみです";
}else{
  echo "カタカナのみではありません";
}

Shift-JIS コード表記

if(preg_match("/^(¥x83[¥x40-¥x96]|¥x81[¥x52¥x53¥x5b])+$/",$str)){
  echo "カタカナのみです";
}else{
  echo "カタカナのみではありません";
}

Shift-JIS では、コードの範囲指定で¥x5bを使用すると下記のようなエラーが出ます。
Warning: Compilation failed: missing terminating ] for character class at offset 1
これは¥x5bが、『 [ 』を意味するためです。¥でエスケープし、¥¥x5bとすることで回避できます。

UTF-8 EUC-JP Shift-JIS共通

if(preg_match("/^(¥xe3¥x82[¥xa1-¥xbf]|¥xe3¥x83[¥x80-¥xbe]|".
                  "¥xa5[¥xa1-¥xf6]|¥xa1[¥xb3¥xb4¥xbc]|".
                  "¥x83[¥x40-¥x96]|¥x81[¥x52¥x53¥x5b])+$/",$str)){
  echo "カタカナのみです";
}else{
  echo "カタカナのみではありません";
}

文字コード表からUTF部分を抜粋すると文字コードは以下です。

Unicode S-JIS   JIS     EUC-JP  文字
0x30A1  0x8340  0x2521  0xA5A1  ァ
0x30A2  0x8341  0x2522  0xA5A2  ア
0x30A3  0x8342  0x2523  0xA5A3  ィ
0x30A4  0x8343  0x2524  0xA5A4  イ
0x30A5  0x8344  0x2525  0xA5A5  ゥ
0x30A6  0x8345  0x2526  0xA5A6  ウ
0x30A7  0x8346  0x2527  0xA5A7  ェ
0x30A8  0x8347  0x2528  0xA5A8  エ
0x30A9  0x8348  0x2529  0xA5A9  ォ
0x30AA  0x8349  0x252A  0xA5AA  オ
0x30AB  0x834A  0x252B  0xA5AB  カ
0x30AC  0x834B  0x252C  0xA5AC  ガ
0x30AD  0x834C  0x252D  0xA5AD  キ
.........
0x30EC  0x838C  0x256C  0xA5EC  レ
0x30ED  0x838D  0x256D  0xA5ED  ロ
0x30EE  0x838E  0x256E  0xA5EE  ヮ
0x30EF  0x838F  0x256F  0xA5EF  ワ
0x30F0  0x8390  0x2570  0xA5F0  ヰ
0x30F1  0x8391  0x2571  0xA5F1  ヱ
0x30F2  0x8392  0x2572  0xA5F2  ヲ
0x30F3  0x8393  0x2573  0xA5F3  ン
0x30F4  0x8394  0x2574  0xA5F4  ヴ
0x30F5  0x8395  0x2575  0xA5F5  ヵ
0x30F6  0x8396  0x2576  0xA5F6  ヶ
0x30FB  0x8145  0x2126  0xA1A6  ・(中点)
0x30FC  0x815B  0x213C  0xA1BC  ー(長音記号)
0x30FD  0x8152  0x2133  0xA1B3  ヽ(片仮名繰返し記号)
0x30FE  0x8153  0x2134  0xA1B4  ヾ(片仮名繰返し記号濁点)

UTF以外は並びが ちょっと違います。

S-JIS   JIS     EUC-JP  Unicode 文字
0x8152  0x2133  0xA1B3  0x30FD  %81R      ヽ(片仮名繰返し記号)
0x8153  0x2134  0xA1B4  0x30FE  %81S      ヾ(片仮名繰返し記号濁点)

0x815B  0x213C  0xA1BC  0x30FC  %81%5B    ー(長音記号)

0x8340  0x2521  0xA5A1  0x30A1  %83%40    ァ
0x8341  0x2522  0xA5A2  0x30A2  %83A      ア
0x8342  0x2523  0xA5A3  0x30A3  %83B      ィ
0x8343  0x2524  0xA5A4  0x30A4  %83C      イ
0x8344  0x2525  0xA5A5  0x30A5  %83D      ゥ
0x8345  0x2526  0xA5A6  0x30A6  %83E      ウ
0x8346  0x2527  0xA5A7  0x30A7  %83F      ェ
0x8347  0x2528  0xA5A8  0x30A8  %83G      エ
0x8348  0x2529  0xA5A9  0x30A9  %83H      ォ
0x8349  0x252A  0xA5AA  0x30AA  %83I      オ
0x834A  0x252B  0xA5AB  0x30AB  %83J      カ
0x834B  0x252C  0xA5AC  0x30AC  %83K      ガ
0x834C  0x252D  0xA5AD  0x30AD  %83L      キ
.........
0x838C  0x256C  0xA5EC  0x30EC  %83%8C    レ
0x838D  0x256D  0xA5ED  0x30ED  %83%8D    ロ
0x838E  0x256E  0xA5EE  0x30EE  %83%8E    ヮ
0x838F  0x256F  0xA5EF  0x30EF  %83%8F    ワ
0x8390  0x2570  0xA5F0  0x30F0  %83%90    ヰ
0x8391  0x2571  0xA5F1  0x30F1  %83%91    ヱ
0x8392  0x2572  0xA5F2  0x30F2  %83%92    ヲ
0x8393  0x2573  0xA5F3  0x30F3  %83%93    ン
0x8394  0x2574  0xA5F4  0x30F4  %83%94    ヴ
0x8395  0x2575  0xA5F5  0x30F5  %83%95    ヵ
0x8396  0x2576  0xA5F6  0x30F6  %83%96    ヶ

UTC(Unicode Technical Committee)の定義したUnicode文字のブロックの範囲は以下です。

文字の種類ブロックの範囲(16進表記)ブロック名
ひらがな3040 〜 309FHiragana
カタカナ30A0 〜 30FFKatakana
漢字4E00 〜 9FFFCJK Unified Ideographs

関連記事

スポンサーリンク

PHP Strict Standards: Non-static method と出る場合の対処法

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

上に戻る