PHPで半角カタカナの入力チェック(正規表現)

phpで半角カタカナのみの入力チェックの必要性があったのでメモ。

参考url:

正規表現:半角カナが含まれていないか調べる – phpspot

半角カナ – Wikipedia

最初は下記の通りやったのですが、小文字の「ァ~ォ、ッ、ャ~ョ」濁点「゙゚」等が反応しなく

うまくいきませんでした。

<?php

mb_regex_encoding('UTF-8');
mb_internal_encoding('UTF-8');

$str = 'アイウエオャュョバピ';

if (mb_ereg('^[ア-ン]+$', $str)) {
    echo '半角カタカナのみです';
} else {
    echo '半角カタカナ以外の文字も含まれています';
}

?>

そこで調べた結果、下記の様にするとうまく行きました。

<?php

mb_regex_encoding('UTF-8');
mb_internal_encoding('UTF-8');

$str = 'アイウエオャュョバピ';

if (mb_ereg('^[ヲ-゚]+$', $str)) {
    echo '半角カタカナのみです';
} else {
    echo '半角カタカナ以外の文字も含まれています';
}

?>

ちなみに、句読点「、」「。」等も含めたい場合は

mb_ereg('^[。-゚]+$', $str)

とすると良さそうです。

う~ん、正規表現は難しい~(;´Д`)
もし間違ってたり、もっと良い方法をご存じの方はお知らせ頂けると嬉しいです(´∀`)