<?php
$value = preg_replace('/[^ぁ-んァ-ヶーア-ン゙゚ァ-ォャ-ョー]/u', '', $value);
$value = mb_convert_kana($value, 'C'); // 全角ひらがな -> 全角カタカナ
$value = mb_convert_kana($value, 'k'); // 全角カタカナ -> 半角カタカナ
正規表現は苦手なのでメモ。
追記
mb_convert_kanaの変換オプションは複数指定できたみたいです。
<?php
// 全角ひらがな -> 半角カタカナ、全角カタカナ -> 半角カタカナを同時指定
$value = mb_convert_kana($value, 'kh');