すべてカタカナかどうか調べる
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 〜 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かどうか調べる
- すべて漢字かどうか調べる
- すべて「ひらがな」かどうか調べる
スポンサーリンク