先日、業務で商品検索プログラムを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);
// バー
こうすることで、半角カタカナの正しい変換が行われるようになる。