PHPプログラミング

最終更新日:
公開日:

レシピ

文字列

文字の半角/全角表記を整える

mb_convert_kana関数を使って、文字の半角、全角表記を整える方法について解説します。

この記事のポイント

  • アルファベットや数字の半角/全角を揃える
  • 日本語カタカナの半角/全角を揃える
  • ひらがなをカタカナにしたり、逆にカタカナをひらがなに変換する

目次

半角/全角を変換して整える

日本語など英語以外の文字を扱う環境では、半角と全角の2種類の文字を扱うことが多くなります。
そのため、メールアドレスやパスワードの入力などで半角英数字のデータが欲しい場合においても、全角のアルファベットが混じってしまう可能性があります。

そこでmb_convert_kana関数を使って強制的に半角/全角の表記を整えることができます。

コード例

mb_convert_kana( $string, 'r', 'UTF-8');

3つのパラメータですが、前から「半角/全角に変換する文字列」、変換モード、文字コードの順に指定しています。
変換モードは次のようにたくさんのバリエーションが用意されています。

  • r – アルファベットについて、全角から半角へ変換
  • R – アルファベットについて、半角から全角へ変換
  • n – 数字について、全角から半角へ変換
  • N – 数字について、半角から全角へ変換
  • a – アルファベットと数字について、全角から半角へ変換
  • A – アルファベットと数字について、半角から全角へ変換
  • s – スペースについて、全角から半角へ変換
  • S – スペースについて、半角から全角へ変換
  • k – カタカナについて、「全角」から「半角」へ変換
  • K – カタカナについて、「半角」から「全角」へ変換
  • h – 「全角ひらがな」を「半角カタカナ」へ変換
  • H – 「半角カタカナ」を「全角ひらがな」へ変換
  • c – 「全角カタカナ」を「全角ひらがな」へ変換
  • C – 「全角ひらがな」を「全角カタカナ」へ変換
  • V – 濁点付き文字を1文字へ変換。「K」や「H」と合わせて指定

ここからは、いくつかの代表的な変換例をみていきます。

全角アルファベットを半角アルファベットへ変換

全角アルファベットが含まれている文字列を、半角アルファベットへ強制的に変換します。

コード例

// 変換する文字列
$str = "This is CAT.";

// 変換する前
var_dump($str);

// 変換を実行
$str = mb_convert_kana( $str, 'r');

// 変換した後
var_dump($str);

出力例

// 変換する前
string(18) "This is CAT."

// 変換した後
string(12) "This is CAT."

全角アルファベットの「CAT」が、半角アルファベット「CAT」へ変換されました。

全角アルファベットと数字を全て半角へ変換

全角アルファベットと数字が含まれている文字列を、全て半角へ強制的に変換します。

コード例

// 変換する文字列
$str = "30 OCTOBER 2016";

// 変換前の文字列を出力
var_dump($str);

// 変換を実行
$str = mb_convert_kana( $str, 'a');

// 変換後の文字列を出力
var_dump($str);

出力例

// 変換する前
string(41) "30 OCTOBER 2016"

// 変換した後
string(15) "30 OCTOBER 2016"

変換モード「a」は全角アルファベットと全角数字をいずれも半角に変換します。
出力結果からも、半角英数に変換されていることがわかります。

半角カタカナを全角カタカナへ変換

アルファベットや数字以外にも、半角カタカナを全角カタカナへ変換することもできます。
変換モードに「KV」を指定します。

濁点については注意が必要です。
変換モードに「V」を指定するかどうかで、変換後の濁点を1文字として扱うか指定することができます。

コード例

// 変換する文字列
$str = "アルファベット";

// 変換前の文字列を出力
var_dump($str);

// 変換を実行
$str = mb_convert_kana( $str, 'KV');

// 変換後の文字列を出力
var_dump($str);

出力例

// 変換する前
string(24) "アルファベット"

// 変換した後
string(21) "アルファベット"

もし変換モードに「V」を指定しない場合は、次のように濁点も1文字として変換されます。

コード例

// 変換する文字列
$str = "アルファベット";

// 変換前の文字列を出力
var_dump($str);

// 変換を実行
$str = mb_convert_kana( $str, 'K');

// 変換後の文字列を出力
var_dump($str);

出力例

// 変換する前
string(24) "アルファベット"

// 変換した後
string(24) "アルファヘ゛ット"

」が「」「」の2文字に分かれていることが分かります。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。