Windows上でWORDやメモ帳を使ったことがある人であれば、文字変換という言葉をよく耳にすることと思います。
文字変換には、漢字変換、カタカナ変換、ひらがな変換、半角全角変換などいろいろありますよね。
今回は、半角で入力されたカタカナや数字を全角文字に変換されたり、逆に全角で入力されたカタカナや数字を半角文字に変換したりする、半角全角変換の方法について紹介したいと思います。

mb_convert_kana関数

PHPには、mb_convert_kana関数が用意されており、引数にオプションを指定することで、いろいろな変換が可能です。

説明

引数1に指定した入力文字を、引数2で指定するオプションに従って、文字変換をおこないます。引数2で指定できるオプションを一覧表にまとめましたのでご覧ください。

変換オプション一覧
オプション 説明
r 全角英字を半角に変換
R 半角英字を全角に変換
n 全角数字を半角に変換
N 半角数字を全角に変換
a 全角英数字を半角に変換
A 半角英数字を全角に変換
s 全角スペースを半角に変換
S 半角スペースを全角に変換
k 全角カタカナを半角カタカナに変換
K 半角カタカナを全角カタカナに変換
h 全角ひらがなを半角カタカナに変換
H 半角カタカナを全角ひらがなに変換
c 全角カタカナを全角ひらがなに変換
C 全角ひらがなを全角カタカナに変換
V 濁点付の文字を1文字に変換

書式

mb_convert_kana (引数1、引数2)
引数1:入力文字列
引数2:オプション ※前述のオプション一覧表を参照ください。

戻り値

オプションで指定された変換方法によって、変換された文字列

サンプルプログラムによる使用例

それでは、実際に、mb_convert_kana関数を使用して、入力文字を変換してみましょう。
主なオプションを使って文字変換するサンプルプログラム

<?php
echo '全角英字Aを半角「', mb_convert_kana('A','r'), '」に変換しました。','<br>';
echo '半角英字Aを全角「', mb_convert_kana('A','R'), '」に変換しました。','<br>';
echo '全角カナ(トウキョウ)を半角「', mb_convert_kana('トウキョウ','k'), '」に変換しました。','<br>';
echo '半角カナ(トウキョウ)を全角「', mb_convert_kana('トウキョウ','K'), '」に変換しました。','<br>';
echo '全角数字6を半角「', mb_convert_kana('6','n'), '」に変換しました。','<br>';
echo '半角数字6を全角「', mb_convert_kana('6','N'), '」に変換しました。','<br>';
echo '全角ひらがな(とうきょう)を半角カナ「', mb_convert_kana('とうきょう','h'), '」に変換しました。','<br>';
echo '半角カナ(トウキョウ)を全角ひらがな「', mb_convert_kana('トウキョウ','N'), '」に変換しました。','<br>';
?>

実行結果

全角英字Aを半角「A」に変換しました。
半角英字Aを全角「A」に変換しました。
全角カナ(トウキョウ)を半角「トウキョウ」に変換しました。
半角カナ(トウキョウ)を全角「トウキョウ」に変換しました。
全角数字6を半角「6」に変換しました。
半角数字6を全角「6」に変換しました。
全角ひらがな(とうきょう)を半角カナ「トウキョウ」に変換しました。
半角カナ(トウキョウ)を全角ひらがな「トウキョウ」に変換しました。

伝票番号を入力するサンプルプログラム

<p>数字5桁の注文番号を入力してください。</p>
<form action="number-cnv-output1.php" method="post">
<input type="text" name="order">
<input type="submit" value="確定">
</form>

伝票番号を出力するサンプルプログラム(number-cnv-output1.php)

<?php
$order=mb_convert_kana($_REQUEST['order'], 'n');
if (preg_match('/^[0-9]{5}$/', $order)) {
	echo '注文番号は ' ,$order, ' です。';
} else {
	echo $order, 'は正しい注文番号ではありません。';
}
?>

実行結果

数字5桁の注文番号を入力してください。


 

正しく入力できた場合

注文番号は 12345 です。

正しく入力しなかった場合

A1234は正しい注文番号ではありません。

まとめ

全角半角の文字変換は、郵便番号や電話番号のように、入力フォーマットから入力された文字情報を、半角に統一して取り扱うような場合に便利です。
また、サンプルプログラムに登場しましたが、想定される入力形式であるかどうかをチェックするpreg_match関数と合わせて使用すると、ほしい情報を正確に入力してもらうことができます。
ぜひ、このような関数があることを知っておくとともに、必要に応じて試してみてください。
【おすすめ記事】
【初心者歓迎】PHP学習で人気のプログラミングスクール
バックエンドエンジニアおすすめ!PHPの学習サイト9つ
PHPの本・参考書の評判