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”のコミットメッセージで追加されていました。歴史があります。