mb_convert_kanaを利用してひらがなを全角カタカナに変換する方法

PHPを利用してユーザーが入力した任意の文字列を

  • ひらがな・半角カタカナ⇒全角カタカナ
  • 全角英数記号⇒半角英数記号

というルールで変換する要件がありました。

自作するのはヤダな〜と思いつつ調べたら便利な関数がありました。

string mb_convert_kana ( string $str [, string $option = “KV” [, string $encoding ]] )

うん、とても直感的でわかりやすいですね。

実装例

前述のルールはプロジェクト共通なのでUtilクラスにラッピングした関数を作成します。

class StringUtil{

   /**
    * 引数の文字列を
    *  ・ひらがな・半角カタカナ⇒全角カタカナ
    *  ・全角英数記号⇒半角英数記号
    * のルールで変換します
    *
    * @param string $aWord
    */
  public static function convert2string( $aWord ){

    // 文字コードは環境に合わせて指定する
    $str = mb_convert_kana($aWord,"CKVa","UTF-8");

    // 該当しない記号(’”¥~ )を手動で変換
    $org = array("’","”","¥","~","・");
    $new = array("'",'"',"\\","~","・");

    return str_replace($org,$new,$str);
  }
}

第三引数は文字エンコーディングの指定ですが、つまらないバグを防ぐ意味で省略せずに明示的に指定してあげましょう。

といいつつ、最初は「V」を指定していなくてバグ報告が上がってしまいました。
普段はあまり意識しませんが、濁点付きの半角のカナって二文字なんですよね…。
マニュアルは最後まで目を通せという良い教訓です。

使用可能オプション

r 英字を「全角」 ⇛ 「半角」
R 英字を「半角」 ⇛ 「全角」
n 数字を「全角」 ⇛ 「半角」
N 数字を「半角」 ⇛ 「全角」
a 英数字を「全角」 ⇛ 「半角」
A 英数字を「半角」 ⇛ 「全角」
s スペースを「全角」 ⇛ 「半角」
S スペースを「半角」⇛「全角」
k 「全角カタカナ」 ⇛「半角カタカナ」
K 「半角カタカナ」 ⇛「全角カタカナ」
h 「全角ひらがな」 ⇛「半角カタカナ」
H 「半角カタカナ」 ⇛「全角ひらがな」
c 「全角カタカナ」 ⇛「全角ひらがな」
C 「全角ひらがな」 ⇛「全角カタカナ」
V 濁点付きの文字を一文字に変換します。”K”, “H” と共に使用します。

 

オプションも充実していますね。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る