PHPは世界中で使われているプログラミング言語であり、日本人ユーザはおそらく少数派です。そんなPHPですが日本語環境でのみ使用可能な関数があります(PHP: マルチバイト文字列 – Manualにある様なやや広範な範囲でなく本当に日本語のみ)。その関数は mb_convert_kana という関数でその名の通り かな や カナ を変換します。
PHP: mb_convert_kana – Manual
具体的な挙動は次です
// r 「全角」英字を「半角」に変換します。
// R 「半角」英字を「全角」に変換します。
// n 「全角」数字を「半角」に変換します。
// N 「半角」数字を「全角」に変換します。
// a 「全角」英数字を「半角」に変換します。
// A 「半角」英数字を「全角」に変換します ("a", "A" オプションに含まれる文字は、U+0022, U+0027, U+005C, U+007Eを除く U+0021 - U+007E の範囲です)。
// s 「全角」スペースを「半角」に変換します(U+3000 -> U+0020)。
// S 「半角」スペースを「全角」に変換します(U+0020 -> U+3000)。
// k 「全角カタカナ」を「半角カタカナ」に変換します。
// K 「半角カタカナ」を「全角カタカナ」に変換します。
// h 「全角ひらがな」を「半角カタカナ」に変換します。
// H 「半角カタカナ」を「全角ひらがな」に変換します。
// c 「全角カタカナ」を「全角ひらがな」に変換します。
// C 「全角ひらがな」を「全角カタカナ」に変換します。
// V 濁点付きの文字を一文字に変換します。"K", "H" と共に使用します。
--FILE--
<?php
echo mb_convert_kana('あゝすゞめアヽスヾメ', 'C', 'UTF-8') . "\n";
echo mb_convert_kana('あゝすゞめアヽスヾメ', 'c', 'UTF-8') . "\n";
// オプションは組み合わせ手使えます。全角カタカナと半角スペースに統一したいならば次
echo mb_convert_kana('あゝすゞめアヽスヾメア ガ', 'KVCs') . "\n";
?>
--EXPECT--
アヽスヾメアヽスヾメ
あゝすゞめあゝすゞめ
アヽスヾメアヽスヾメア ガ
正規表現やstr_replaceでちまちまやらなくとも一発です。
この関数、PHP4の時点で既にあったようで、GitHub上にあるphp-srcのmbstr関数定義を遡っていくと2001年4月末に”added japanese string function module”のコミットメッセージで追加されていました。歴史があります。