- 公開日: 2019年06月10日
phpのmb_convert_kanaを使って全角・半角の変換を行おう!
【はじめに】
PHPにはmb_convert_kana関数があります。
この関数を使うと、
・指定した文字列を半角から全角に変換することができます
・変換対象は、全角数字、半角カナ、半角数字、ひらがな、カタカナです
ここでは、基本的な利用の仕方として
mb_convert_kana関数とは
mb_convert_kana関数の書き方
mb_convert_kana関数の使い方
それぞれの文字への変換方法
ということの説明をします。
加えて、
オプションVをつけたときとつけないときの違いについて
変換できないときについて
いろいろな種類の文字を一度に変換する方法
変換できない文字について
も説明します。
【mb_convert_kana関数とは】
指定した文字列を半角文字列(注1)から全角文字列(注1)へ、もしくは、全角文字列(注1)から半角文字列(注1)へ変換します。
オプションを指定することで、変換する対象を変更できます。
\Webサイト担当者としてのスキルが身に付く/
【mb_convert_kana関数の書き方】
string mb_convert_kana ( string $input_string [, string $option [, string $encoding ]] )
【戻り値】
mb_convert_kana関数が実行された結果として、mb_convert_kana関数から戻される値です。
$input_stringで与えた文字列を変換し終えた文字列です。
【引数(注2)の説明】
*** $input_string ***
変換する元になる文字列を指定します。
この指定は必ずします。
*** $option ***
変換の仕方を指定します。
オプションは下の一覧を参考にしてください。
この引数は、かならずしも指定しなくてもいいです。
指定しない場合は、"KV"として変換されます。
*** $encoding ***
文字コード(注3)を指定します。
この引数は、かならずしも指定しなくてもいいです。
指定しない場合は、内部エンコーディングが使用されます。内部エンコーディングの値はmb_internal_encoding関数の返り値と同じです。
オプションの種類
記号 | 機能 |
---|---|
r | 「全角」英字を「半角」に変換 |
R | 「半角」英字を「全角」に変換 |
n | 「全角」数字を「半角」に変換 |
N | 「半角」数字を「全角」に変換 |
a | 「全角」英数字を「半角」に変換 |
A | 「半角」英数字を「全角」に変換 |
s | 「全角」スペースを「半角」に変換 |
S | 「半角」スペースを「全角」に変換 |
k | 「全角カタカナ」を「半角カタカナ」に変換 |
K | 「半角カタカナ」を「全角カタカナ」に変換 |
h | 「全角ひらがな」を「半角カタカナ」に変換 |
H | 「半角カタカナ」を「全角ひらがな」に変換 |
c | 「全角カタカナ」を「全角ひらがな」に変換 |
C | 「全角ひらがな」を「全角カタカナ」に変換 |
V | 濁点付きの文字を一文字に変換。K、Hと共に使用します。 |
###【mb_convert_kana関数の使い方】
・「全角」英字を「半角」に変換
オプション指定として、r を利用します。
例:
<?php
$str = mb_convert_kana('ABC','r','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(3) "ABC"
(表示の終わり)
ABCという3文字に対して、長さも3となっています。そのため、ABCは半角の文字と判ります。
・「半角」英字を「全角」に変換
オプション指定として、Rを利用します。
例:
<?php
$str = mb_convert_kana('ABC','R','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(9) "ABC"
(表示の終わり)
ABCという3文字に対して、長さが9となっていて、文字数と長さが異なります。そのため、ABCは全角の文字と判ります。
・「全角」数字を「半角」に変換
オプション指定として、nを利用します。
例:
<?php
$str = mb_convert_kana('123','n','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(3) "123"
(表示の終わり)
123という3文字に対して、長さも3となっています。そのため、123は半角の文字と判ります。
・「半角」数字を「全角」に変換
オプション指定として、Nを利用します。
例:
<?php
$str = mb_convert_kana('123','N','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(9) "123"
(表示の終わり)
123という3文字に対して、長さが9となっていて、文字数と長さが異なります。そのため、123は全角の文字と判ります。
・「全角」英数字を「半角」に変換
オプション指定として、aを利用します。
例:
<?php
$str = mb_convert_kana('abc123','a','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(6) "abc123"
(表示の終わり)
abc123という6文字に対して、長さも6となっています。そのため、abc123は半角の文字と判ります。
・「半角」英数字を「全角」に変換
オプション指定として、Aを利用します。
例:
<?php
$str = mb_convert_kana('abc123','A','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(18) "abc123"
(表示の終わり)
abc123という6文字に対して、長さが18となっていて、文字数と長さが異なります。そのため、abc123は全角の文字と判ります。
・「全角」スペースを「半角」に変換
オプション指定として、sを利用します。
例:
<?php
$str = mb_convert_kana(' ','s','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(1) " "
(表示の終わり)
空白1文字に対して、長さも1となっています。そのため、この空白は半角の文字と判ります。
・「半角」スペースを「全角」に変換
オプション指定として、Sを利用します。
例:
<?php
$str = mb_convert_kana(' ','S','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(3) " "
(表示の終わり)
空白1文字に対して、長さが3となっていて、文字数と長さが異なります。そのため、この空白は全角の文字と判ります。
・「全角カタカナ」を「半角カタカナ」に変換
オプション指定として、kを利用します。
例:
<?php
$str = mb_convert_kana('アイウエオ','k','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "アイウエオ"
(表示の終わり)
変換前に引数として指定したアイウエオと比べ、結果のアイウエオは、字の大きさが小さく、半角の文字なのが判ります。
・「半角カタカナ」を「全角カタカナ」に変換
オプション指定として、Kを利用します。
例:
<?php
$str = mb_convert_kana('アイウエオ','K','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "アイウエオ"
(表示の終わり)
変換前に引数として指定したアイウエオと比べ、結果のアイウエオは、字の大きさが大きく、全角の文字なのが判ります。
・「全角ひらがな」を「半角カタカナ」に変換
オプション指定として、hを利用します。
例:
<?php
$str = mb_convert_kana('あいうえお','h','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "アイウエオ"
(表示の終わり)
・「半角カタカナ」を「全角ひらがな」に変換
オプション指定として、Hを利用します。
例:
<?php
$str = mb_convert_kana('アイウエオ','H','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "あいうえお"
(表示の終わり)
・「全角カタカナ」を「全角ひらがな」に変換
オプション指定として、cを利用します。
例:
<?php
$str = mb_convert_kana('アイウエオ','c','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "あいうえお"
(表示の終わり)
・「全角ひらがな」を「全角カタカナ」に変換
オプション指定として、Cを利用します。
例:
<?php
$str = mb_convert_kana('あいうえお','C','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "アイウエオ"
(表示の終わり)
【オプションVをつけたときとつけないときの違いについて】
濁点つきの文字は、オプションにVを付け無い場合には、2文字になります。
・濁点付きの文字を一文字に変換
例:
濁点付きの「半角カタカナ」を「全角カタカナ」に変換
<?php
$str = mb_convert_kana('ガギグゲゴ','K','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(30) "カ゛キ゛ク゛ケ゛コ゛"
(表示の終わり)
・濁点付きの「半角カタカナ」を「全角ひらがな」に変換
例:
<?php
$str = mb_convert_kana('ガギグゲゴ','H','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(30) "か゛き゛く゛け゛こ゛"
(表示の終わり)
濁点付きの文字を一文字に変換するときには、オプション指定として、KVやHVを利用します。
例:
・オプションとして、KVを利用して、濁点付きの「半角カタカナ」を「全角ひらがな」に変換
例:
<?php
$str = mb_convert_kana('ガギグゲゴ','KV','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "ガギグゲゴ"
(表示の終わり)
先のオプションにVを付けないKの時には、string(30) "カ゛キ゛ク゛ケ゛コ゛" と、長さが30になっています。
・オプションとして、HVを利用して、濁点付きの「半角カタカナ」を「全角ひらがな」に変換
例:
<?php
$str = mb_convert_kana('ガギグゲゴ','HV','utf-8');
var_dump(str);
?>
プログラムを実行したときには、以下のように表示されます。
(表示の始まり)
string(15) "がぎぐげご"
(表示の終わり)
先のオプションにVを付けないKの時には、string(30) "か゛き゛く゛け゛こ゛" と、長さが30になっています。
応用として使い方を以下に紹介してきます。
【変換できないときについて】
mb_convert_kana関数が正しく実行されれば、mb_convert_kana関数の実行結果は、引数で指定した文字列が変換されています。しかし、実行後の文字列が引数で指定した文字列と同じ場合、正しく変換されていません。そのような場合には、以下の3点を確認します。
・mb_convert_kana関数では、半角に変換できない文字があります。詳しくは、【変換できない文字について】を参照してください。
・オプションの指定が間違っていないかを確認します。
・文字コードの指定がされていない場合には、文字コードの指定をしてみます。また、既に文字コードの指定がされている場合には、その指定が正しいかを確認しましょう。
現在設定されている文字コードの確認方法の例
<?php
echo(mb_internal_encoding());
?>
このプログラムを実行すると、実行時に設定されている文字コードが表示されます。
【mb_convert_kana関数の引数として、文字コードを指定しない方法】
mb_convert_kana関数を実行するよりも前に、mb_internal_encoding関数で、文字コードを設定します。
例:
<?php
mb_internal_encoding("utf-8");
$str = mb_convert_kana('123','N');
var_dump($str);
echo(mb_internal_encoding())
?>
【いろいろな種類の文字を一度に変換する】
<?php
/* 文字列を定義 */
$str_kana = "ABC ABC 123 123 アイウエオ アイウエオ";
/* 半角 ⇔ 全角 変換 */
$str = mb_convert_kana($str_kana, 'kvrn','utf-8');
var_dump($str);
$str = mb_convert_kana($str_kana, 'KVRN','utf-8');
var_dump($str);
?>
実行結果です。
指定したオプションに従い、半角 ⇔ 全角が変換されます。
string(47) "ABC ABC 123 123 アイウエオ アイウエオ"
string(71) "ABC ABC 123 123 アイウエオ アイウエオ"
【変換できない文字について】
半角への変換ができない記号が4つあります。
円記号(¥)
ダブルクォーテーション(”)
シングルクォーテーション(’)
波線(〜)
の4つです。
mb_convert_kana関数を使って、これらの記号を半角に変換することはできません。
実行例
・円記号(¥)の場合
<?php
$str = mb_convert_kana('¥', "askhc","utf-8");
var_dump($str);
?>
実行結果です。
(表示の始まり)
string(3) "¥"
(表示の終わり)
円記号(¥)が全角のままです。
・ダブルクォーテーション(”)の場合
<?php
$str = mb_convert_kana('”', "askhc","utf-8");
var_dump($str);
?>
実行結果です。
(表示の始まり)
string(3) "”"
(表示の終わり)
ダブルクォーテーション(”)が全角のままです。
・シングルクォーテーション(’)の場合
<?php
$str = mb_convert_kana('’', "askhc","utf-8");
var_dump($str);
?>
実行結果です。
(表示の始まり)
string(3) "'"
(表示の終わり)
シングルクォーテーション(’)が全角のままです。
・波線(〜)の場合
<?php
$str = mb_convert_kana('〜', "askhc","utf-8");
var_dump($str);
?>
実行結果です。
(表示の始まり)
string(3) "〜"
(表示の終わり)
波線(〜)が全角のままです。
【補足説明】
注1
半角文字と全角文字について
半角文字と全角文字の表示上の違いは、一文字ずつの横幅の違いです。
全角文字は、表示される文字が正方形で表示されます。
半角文字は、表示される文字が長方形で縦長に表示されます。
この説明はあくまでも表示上の違いとしてのものです。また、利用しているフォントによって必ずしも全角文字が正方形になるわけではありません。
また、プログラムでの利用のされ方の違いとしては、
全角文字は、計算に利用することは出来ず、あくまでも文字として利用されます。
半角文字は、計算に利用することが出来ます。
そのため、半角文字には、計算に利用するための数値としての意味と文字として意味があります。
「"(ダブルクォート)」か「'(シングルクォート)」で囲まれた場合、文字となります。
全角文字は、必ず「"(ダブルクォート)」か「'(シングルクォート)」
注2
引数とは、
「ひきすう」と読みます。
関数を実行するときに、関数の中で処理をするために、渡すデータのことを指します。
mb_convert_kana関数の場合は、代表的な引数は、input_stringです。
input_stringとして、変換する元となる文字列をmb_convert_kana関数に伝えています。
注3
文字コード
コンピュータの内部では、文字それぞれに番号を割り当ててあり、プログラムからは、その番号を使用しています。
この文字への番号の割り当てを文字コードといいます。
その番号の割り当ての仕方には、種類が複数あります。
その種類jの名称として、Shift_JIS、EUC-JP、UTF-8、UTF-16などがあります。
【参考サイト】
PHP マニュアル
http://php.net/manual/ja/function.mb-convert-kana.php
【終わりに】
mb_convert_kana関数 の使い方について説明しました。
mb_convert_kana関数は、指定するオプションによって結果が変わってきます。また、文字コードの指定によって正しく変換できない場合もありますので、注意しましょう。
- この記事を書いた人
- 坂田 健一