正規表現の問題集1(基本編) 2(応用編)入門(1)入門(2)

[あとでやる]
正規表現の問題集1(基本編)
http://codezine.jp/article/detail/1573

正規表現の問題集2(応用編)
http://codezine.jp/article/detail/2676

正規表現の入門(1)基礎的なメタ文字
http://codezine.jp/article/detail/3246

正規表現の入門(2)難しいメタ文字
http://codezine.jp/article/detail/3247

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)

とすると良さそうです。

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