PHPのmb_convert_kanaで全角・半角の変換をする方法

PHPのmb_convert_kanaで全角・半角の変換をする方法

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座


PHPのmb_convert_kana関数で全角と半角を変換する方法

Webアプリケーションでフォーム入力を処理する際、ユーザーが全角文字と半角文字を混在して入力することがあります。このような表記揺れを統一するには、PHPのmb_convert_kana関数を使用することで簡単に変換できます。

mb_convert_kana関数の基本的な書き方は、「mb_convert_kana(変換する文字列, オプション, 文字コード)」の形式で記述します。オプションを指定することによって、変換する文字種を柔軟に制御できます。

全角と半角を変換する方法として、以下の4つがあります。

  • 全角英数字を半角に変換する
  • 半角英数字を全角に変換する
  • 全角カタカナを半角に変換する
  • 半角カタカナを全角に変換する

それぞれの変換方法には対応するオプションが用意されており、目的に応じて使い分けることができます。以下では、各変換方法について詳しく解説していきます。

全角英数字を半角に変換する

全角英数字を半角に変換するには、オプションに「a」を指定します。このオプションは、全角の英字(A-Z、a-z)と数字(0-9)を半角に変換します。

<?php
$str = 'ABC123';
$result = mb_convert_kana($str, 'a', 'UTF-8');
echo $result;
// 出力結果: ABC123
?>

上記のコードでは、全角文字列「ABC123」がオプション「a」によって半角の「ABC123」に変換されています。フォーム入力で電話番号や郵便番号を処理する際に、この変換方法が役立ちます。

半角英数字を全角に変換する

半角英数字を全角に変換するには、オプションに「A」を指定します。オプション「A」は、オプション「a」の逆の動作を行い、半角の英数字を全角に変換します。

<?php
$str = 'ABC123';
$result = mb_convert_kana($str, 'A', 'UTF-8');
echo $result;
// 出力結果: ABC123
?>

このコードでは、半角文字列「ABC123」が全角の「ABC123」に変換されます。表示を統一したい場合や、全角での出力が求められる場面で使用できます。

全角カタカナを半角に変換する

全角カタカナを半角カタカナに変換するには、オプションに「k」を指定します。このオプションを使用することによって、全角のカタカナ文字を半角カタカナに変換できます。

<?php
$str = 'アイウエオ';
$result = mb_convert_kana($str, 'k', 'UTF-8');
echo $result;
// 出力結果: アイウエオ
?>

全角カタカナ「アイウエオ」が半角カタカナ「アイウエオ」に変換されました。ただし、半角カタカナは文字化けのリスクがあるため、通常は全角カタカナでの統一が推奨されます。

半角カタカナを全角に変換する

半角カタカナを全角カタカナに変換するには、オプションに「K」を指定します。このオプションは、半角カタカナを全角カタカナに変換し、表示を統一できます。

<?php
$str = 'アイウエオ';
$result = mb_convert_kana($str, 'K', 'UTF-8');
echo $result;
// 出力結果: アイウエオ
?>

半角カタカナ「アイウエオ」が全角カタカナ「アイウエオ」に変換されています。フォームから入力されたフリガナを全角に統一する際に、この変換が頻繁に使用されます。

【PR】プログラミングや生成AIを無料で学べる「コードキャンプフリー」

PHPのmb_convert_kana関数でひらがなとカタカナを変換する方法

氏名のフリガナ入力を処理する際、ユーザーがひらがなで入力するかカタカナで入力するかは統一されていないことがあります。PHPのmb_convert_kana関数を使用することによって、ひらがなとカタカナを相互に変換し、表記を統一できます。

  • ひらがなをカタカナに変換する
  • カタカナをひらがなに変換する
  • 半角カタカナをひらがなに変換する

これらの変換を適切に使い分けることによって、データベースに保存する前にフリガナの形式を統一できます。以下では、各変換方法について詳しく解説していきます。

ひらがなをカタカナに変換する

ひらがなをカタカナに変換するには、オプションに「C」を指定します。このオプションを使用することによって、全角ひらがなを全角カタカナに変換できます。

<?php
$str = 'やまだたろう';
$result = mb_convert_kana($str, 'C', 'UTF-8');
echo $result;
// 出力結果: ヤマダタロウ
?>

ひらがなで入力されたフリガナ「やまだたろう」がカタカナ「ヤマダタロウ」に変換されています。フリガナをカタカナに統一したい場合に、この変換が役立ちます。

カタカナをひらがなに変換する

カタカナをひらがなに変換するには、オプションに「c」を指定します。このオプションは、全角カタカナを全角ひらがなに変換します。

<?php
$str = 'ヤマダタロウ';
$result = mb_convert_kana($str, 'c', 'UTF-8');
echo $result;
// 出力結果: やまだたろう
?>

カタカナで入力されたフリガナ「ヤマダタロウ」が、ひらがな「やまだたろう」に変換されました。フリガナをひらがなに統一したい場合に使用できます。

半角カタカナをひらがなに変換する

半角カタカナをひらがなに変換するには、オプションに「HV」を指定します。オプション「H」で半角カタカナを全角ひらがなに変換し、オプション「V」で濁点を1文字に統合します。

<?php
$str = 'ガギグゲゴ';
$result = mb_convert_kana($str, 'HV', 'UTF-8');
echo $result;
// 出力結果: がぎぐげご
?>

半角カタカナ「ガギグゲゴ」が全角ひらがな「がぎぐげご」に変換されています。オプション「V」を併用することによって、濁点付き文字が正しく1文字として処理されます。

mb_convert_kana関数の変換オプション一覧

mb_convert_kana関数では、変換する文字種を指定するために様々なオプションが用意されています。オプションを組み合わせることによって、複数の文字種を同時に変換することも可能です。

変換オプションは、以下の4つのカテゴリに分類されます。

  • 英数字変換のオプション
  • カタカナ変換のオプション
  • スペース変換のオプション
  • 濁点処理のオプション

各オプションには小文字と大文字の区別があり、小文字は全角から半角への変換、大文字は半角から全角への変換を意味します。以下では、各カテゴリのオプションについて詳しく解説していきます。

英数字変換のオプション

英数字変換のオプションは、英字と数字の全角半角変換を制御します。個別に英字のみ、数字のみを変換するオプションと、英数字をまとめて変換するオプションがあります。

オプション 変換内容
r 全角英字を半角に変換
例: ABC → ABC
R 半角英字を全角に変換
例: ABC → ABC
n 全角数字を半角に変換
例: 123 → 123
N 半角数字を全角に変換
例: 123 → 123
a 全角英数字を半角に変換
rとnを組み合わせたもの
A 半角英数字を全角に変換
RとNを組み合わせたもの

オプション「a」と「A」には記号も含まれており、「#」「$」「?」などの記号も変換対象となります。英字のみ、数字のみを変換したい場合は「r」「n」などの個別オプションを使用してください。

【PR】『Python』を学べる企業・個人向けのプログラミングコース

カタカナ変換のオプション

カタカナ変換のオプションは、カタカナとひらがなの変換を制御します。全角カタカナ、半角カタカナ、ひらがなの間で相互に変換できます。

オプション 変換内容
k 全角カタカナを半角カタカナに変換
例: アイウエオ → アイウエオ
K 半角カタカナを全角カタカナに変換
例: アイウエオ → アイウエオ
h 全角ひらがなを半角カタカナに変換
例: あいうえお → アイウエオ
H 半角カタカナを全角ひらがなに変換
例: アイウエオ → あいうえお
c 全角カタカナを全角ひらがなに変換
例: アイウエオ → あいうえお
C 全角ひらがなを全角カタカナに変換
例: あいうえお → アイウエオ

これらのオプションを組み合わせることによって、フリガナの入力形式を統一したり、ひらがな表記をカタカナ表記に変換したりできます。

スペース変換のオプション

スペース変換のオプションは、全角スペースと半角スペースの変換を制御します。文章内のスペースを統一する際に使用します。

オプション 変換内容
s 全角スペースを半角スペースに変換
例: 「 」 → 「 」
S 半角スペースを全角スペースに変換
例: 「 」 → 「 」

フォーム入力では全角スペースと半角スペースが混在することが多いため、オプション「s」を他のオプションと組み合わせて使用することが推奨されます。

濁点処理のオプション

濁点処理のオプション「V」は、半角カタカナの濁点付き文字を1文字として扱います。このオプションは、必ず「K」または「H」と組み合わせて使用します。

オプション 変換内容
V 濁点付きの文字を1文字に変換
KまたはHと併用する
KV 半角カタカナを全角カタカナに変換
濁点を統合して1文字にする
例: ガギグ → ガギグ
HV 半角カタカナを全角ひらがなに変換
濁点を統合して1文字にする
例: ガギグ → がぎぐ

オプション「V」を指定しない場合、「ガ」は「カ゛」のように2文字に分離してしまいます。半角カタカナを変換する際は、必ず「V」オプションを併用してください。

mb_convert_kana関数で文字コードを指定する方法

mb_convert_kana関数の第3引数では、文字コードを指定できます。文字コードを明示的に指定することによって、異なる環境でも一貫した動作を保証し、文字化けを防ぐことができます。

<?php
// PHPファイルの文字コードをUTF-8に設定している場合
mb_internal_encoding('UTF-8');
$str = 'テスト';
$result = mb_convert_kana($str, 'a', 'UTF-8');
echo $result;
?>

上記では、mb_internal_encoding関数で内部文字コードを設定し、mb_convert_kana関数の第3引数と一致させています。この設定によって、文字化けのリスクを最小限に抑えることができます。

文字コード指定の方法として、以下2つがあります。

  • UTF-8を指定する
  • 複数オプションを組み合わせる

第3引数の文字コード指定は省略可能ですが、サーバー環境が変わると予期しない文字化けが発生する可能性がある為、文字コードは指定しておいた方が良いでしょう。以下では、文字コード指定の方法について詳しく解説していきます。

UTF-8を指定する

UTF-8を指定するには、第3引数に「UTF-8」を記述します。UTF-8は現在最も広く使用されている文字コードであり、日本語を含む多言語に対応しています。

<?php
$str = 'ABC123';
$result = mb_convert_kana($str, 'a', 'UTF-8');
echo $result;
// 出力結果: ABC123
?>

第3引数に「UTF-8」を指定することによって、この文字コードでの変換処理が明示的に行われます。どの環境でも同じ結果が得られるため、文字コードの指定は推奨されます。

複数オプションを組み合わせる

複数のオプションを組み合わせるには、オプション文字列を連結して指定します。複数の文字種を同時に変換できるため、処理を効率化できます。

odede><?php
$str = 'ABC123 アイウエオ';
$result = mb_convert_kana($str, 'asK', 'UTF-8');
echo $result;
// 出力結果: ABC123 アイウエオ
?>

オプション「asK」では、全角英数字を半角に(a)、全角スペースを半角に(s)、半角カタカナを全角に(K)という3つの変換が同時に実行されます。複数の文字種が混在している入力値を一度に正規化できるため、実務でよく使用されるテクニックです。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する