先日、業務で商品検索プログラムをPHPで書いていたのだが、半角カナの扱いに躓いたので、その時に学んだことを備忘録として本記事にまとめる。
mb_convert_kana関数とは
文字列の「半角←→全角」の変換を実行するPHPの関数だ。
使い方は、第一引数に変換対象の文字列を入れ、第二引数に変換オプションを指定する。
1 | $keywords = mb_convert_kana( $keywords , 'r' ); |
上記の例ではオプションに「r」を指定したが、これは「全角英字→半角英字」への変換を意味する。
以下のコードを実行すると、以下のとおりとなる。
1 2 3 4 5 | $keywords = "ABC" ; // 全角 $keywords = mb_convert_kana( $keywords , 'r' ); print ( $keywords ); // ABC |
半角カタカナを全角に変換する
この場合、オプションに「K」を指定する。
1 2 3 4 5 | $keywords = "アアア" ; $keywords = mb_convert_kana( $keywords , 'K' ); print ( $keywords ); // アアア |
今回、躓いたのが「バー」のような、濁点付きの半角カタカナの変換だ。
これをそのまま変換しようとすると次のとおり、「ハ」、「゛」と濁点が分かれて変換されてしまう。
1 2 3 4 5 | $keywords = "バー" ; $keywords = mb_convert_kana( $keywords , 'K' ); print ( $keywords ); // ハ゛ー |
この問題を避ける場合、オプションに「V」を追加すると良い。
1 2 3 4 5 | $keywords = "バー" ; $keywords = mb_convert_kana( $keywords , 'KV' ); print ( $keywords ); // バー |
こうすることで、半角カタカナの正しい変換が行われるようになる。