先日、業務で商品検索プログラムをPHPで書いていたのだが、半角カナの扱いに躓いたので、その時に学んだことを備忘録として本記事にまとめる。

mb_convert_kana関数とは

文字列の「半角←→全角」の変換を実行するPHPの関数だ。

使い方は、第一引数に変換対象の文字列を入れ、第二引数に変換オプションを指定する。

$keywords = mb_convert_kana($keywords, 'r');

上記の例ではオプションに「r」を指定したが、これは「全角英字→半角英字」への変換を意味する。

以下のコードを実行すると、以下のとおりとなる。

$keywords = "ABC"; // 全角
$keywords = mb_convert_kana($keywords, 'r');

print($keywords);
// ABC

半角カタカナを全角に変換する

この場合、オプションに「K」を指定する。

$keywords = "アアア";
$keywords = mb_convert_kana($keywords, 'K');

print($keywords);
// アアア

今回、躓いたのが「バー」のような、濁点付きの半角カタカナの変換だ。

これをそのまま変換しようとすると次のとおり、「ハ」、「゛」と濁点が分かれて変換されてしまう。

$keywords = "バー";
$keywords = mb_convert_kana($keywords, 'K');

print($keywords);
// ハ゛ー

この問題を避ける場合、オプションに「V」を追加すると良い。

$keywords = "バー";
$keywords = mb_convert_kana($keywords, 'KV');

print($keywords);
// バー

こうすることで、半角カタカナの正しい変換が行われるようになる。