PHP Tips | 文字列処理:変換系 – ひらがな → カタカナ

PHP PHP
スポンサーリンク

「ひらがな → カタカナ」でやりたいこと

まずゴールをはっきりさせます。

「ひらがなで書かれた文字列」を、「同じ読みのカタカナ」に変換したい。

例えば、こんな文字列があるとします。

やまだ たろう
かたかな
すーぱー

これをプログラムでこう変えたいわけです。

ヤマダ タロウ
カタカナ
スーパー

フリガナ欄を「カタカナで統一したい」ときや、
外部システムとの連携で「カタカナ必須」と決まっているときに、とても役に立つユーティリティです。


PHP で「ひらがな → カタカナ」をする基本:mb_convert_kana

mb_convert_kana の役割

ここでも主役は mb_convert_kana() です。

string mb_convert_kana(
    string $string,
    string $option = "",
    ?string $encoding = null
)
PHP

第2引数の「オプション」で、「何をどう変換するか」を指定します。

ひらがな ↔ カタカナに関係するのはこの2つです。

  • 'c':全角カタカナ → 全角ひらがな
  • 'C':全角ひらがな → 全角カタカナ

今回やりたいのは「ひらがな → カタカナ」なので、使うのは 'C' です。


まずはシンプルな「ひらがな → カタカナ」変換

一番基本の例

$text = "やまだたろう";

$katakana = mb_convert_kana($text, 'C', 'UTF-8');

echo $katakana;
// ヤマダタロウ
PHP

ここでのポイントは三つです。

  • 第1引数:変換したい文字列
  • 第2引数:'C'(ひらがな → カタカナ)
  • 第3引数:'UTF-8'(エンコーディングを明示)

これだけで、「全角ひらがな」を「全角カタカナ」に変換できます。

スペースや漢字が混ざっていても大丈夫

$text = "やまだ 太郎(たろう)";

$katakana = mb_convert_kana($text, 'C', 'UTF-8');

echo $katakana;
// ヤマダ 太郎(タロウ)
PHP

ひらがなだけがカタカナになり、
漢字やスペース、記号はそのまま残ります。


半角カタカナも混ざる場合の考え方

「ひらがな → カタカナ」+「半角カナ → 全角カナ」をどう扱うか

ユーザー入力には、こういうものも混ざります。

$text = "やまだ タロウ";
PHP

ここでやりたいことは、たとえば次のどちらかです。

  • ひらがなも半角カナも、全部「全角カタカナ」にそろえたい
  • ひらがなだけカタカナにして、半角カナは別途扱う

前者をやりたい場合は、オプションを組み合わせます。

  • 'K':半角カタカナ → 全角カタカナ
  • 'C':ひらがな → カタカナ

つまり、'KC' です。

半角カナ混じりの例

$text = "やまだ タロウ";

$katakana = mb_convert_kana($text, 'KC', 'UTF-8');

echo $katakana;
// ヤマダ タロウ
PHP

これで、

  • ひらがな
  • 半角カタカナ

どちらで入力されても、最終的に「全角カタカナ」に統一できます。


実務ユーティリティとして関数にまとめる

フリガナ用:「ひらがな・半角カナ → 全角カタカナ」統一

フリガナ入力欄で、そのまま使える形にしてみます。

/**
 * フリガナ用:ひらがな・半角カナを全角カタカナに統一(UTF-8 前提)
 *
 * @param string $text
 * @return string
 */
function toKatakana(string $text): string
{
    // 半角カタカナ → 全角カタカナ(K)
    // ひらがな → カタカナ(C)
    $text = mb_convert_kana($text, 'KC', 'UTF-8');

    // 全角スペース・半角スペースをまとめて整えたいなら、ここで追加変換も可
    // 例:$text = mb_convert_kana($text, 's', 'UTF-8'); // スペース正規化

    return $text;
}
PHP

使い方はとてもシンプルです。

$rawKana = $_POST['kana'] ?? '';

$kana = toKatakana($rawKana);

echo $kana;
PHP

これで、

  • 「やまだたろう」
  • 「ヤマダ タロウ」
  • 「ヤマダ たろう」

のようなバラバラな入力も、すべて「ヤマダタロウ」にそろえられます。


何に使うと便利か(実務のシーン)

フリガナの保存形式を「カタカナ」に統一したい場合

フリガナを「カタカナで保存する」設計にしておくと、
帳票出力や外部システム連携で扱いやすくなります。

$rawKana = $_POST['kana'] ?? '';

// 保存前にカタカナに統一
$kana = toKatakana($rawKana);

// DB には $kana をそのまま保存
PHP

このとき、「入力はひらがなでもOK」「半角カナでもOK」だけど、
「保存するときは必ずカタカナ」というルールにできます。

検索用に「読み」をカタカナでそろえたい場合

DB に「読み」をカタカナで保存している場合、
検索キーワードもカタカナにそろえてから検索すると、揺れを吸収できます。

$input = $_GET['yomi'] ?? '';

// 入力をカタカナに統一
$keyword = toKatakana($input);

// あとはカタカナで LIKE 検索など
$sql = "SELECT * FROM users WHERE kana LIKE :keyword";
PHP

オプションの組み合わせをもう少しだけ深掘り

「C」と「KC」の違い

'C' だけの場合:

  • ひらがな → カタカナ
  • 半角カタカナ → そのまま(変わらない)

'KC' の場合:

  1. 'K':半角カタカナ → 全角カタカナ
  2. 'C':ひらがな → カタカナ

結果として、

  • ひらがな → 全角カタカナ
  • 半角カタカナ → 全角カタカナ

という、「読みっぽいものは全部カタカナにそろえる」動きになります。

実務でフリガナを扱うなら、ほとんどの場合 'KC' の方が都合がいいです。


まとめ:今日からの「ひらがな → カタカナ」変換の基準

押さえておきたいポイントをコンパクトにまとめます。

  • ひらがな → カタカナ変換は、mb_convert_kana'C' オプションで行う。
  • 半角カタカナも混ざる可能性が高いので、実務では 'KC'(半角カナ → 全角カナ + ひらがな → カタカナ)が定番。
  • フリガナや読みを「カタカナで統一」しておくと、保存・検索・外部連携が安定する。

ユーティリティとしては、まずはこの関数を一つプロジェクトに置いておくとかなり使い回せます。

function toKatakana(string $text): string
{
    return mb_convert_kana($text, 'KC', 'UTF-8');
}
PHP

タイトルとURLをコピーしました