半角/全角を変換して整える
日本語など英語以外の文字を扱う環境では、半角と全角の2種類の文字を扱うことが多くなります。
そのため、メールアドレスやパスワードの入力などで半角英数字のデータが欲しい場合においても、全角のアルファベットが混じってしまう可能性があります。
そこでmb_convert_kana関数を使って強制的に半角/全角の表記を整えることができます。
PHP コード例
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」と合わせて指定 |
ここからは、いくつかの代表的な変換例をみていきます。
全角アルファベットを半角アルファベットへ変換
全角アルファベットが含まれている文字列を、半角アルファベットへ強制的に変換します。
PHP コード例
// 変換する文字列
$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」へ変換されました。
全角アルファベットと数字を全て半角へ変換
全角アルファベットと数字が含まれている文字列を、全て半角へ強制的に変換します。
PHP コード例
// 変換する文字列
$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文字として扱うか指定することができます。
PHP コード例
// 変換する文字列
$str = "アルファベット";
// 変換前の文字列を出力
var_dump($str);
// 変換を実行
$str = mb_convert_kana( $str, 'KV');
// 変換後の文字列を出力
var_dump($str);
出力例
// 変換する前
string(24) "アルファベット"
// 変換した後
string(21) "アルファベット"
もし変換モードに「V」を指定しない場合は、次のように濁点も1文字として変換されます。
PHP コード例
// 変換する文字列
$str = "アルファベット";
// 変換前の文字列を出力
var_dump($str);
// 変換を実行
$str = mb_convert_kana( $str, 'K');
// 変換後の文字列を出力
var_dump($str);
出力例
// 変換する前
string(24) "アルファベット"
// 変換した後
string(24) "アルファヘ゛ット"
「ベ」が「ヘ」「゛」の2文字に分かれていることが分かります。