こんにちは!独学プログラマー&ライターのつぶらやです。
皆さんは普段メールなど書く時に、全角や半角を意識されますでしょうか。
文章を書く上ではあまり問題にならない全角や半角ですが、プログラムを書く時は意識する必要があります。
例えばユーザーにブラウザから入力してもらった結果をサーバーに送る際、数値が全角では困る場合などがあるためです。
本日は、文字列を全角や半角に変換するために以下のお話をしようと思います。
・mb_convert_kana関数とは
・mb_convert_kana関数のオプション
・mb_convert_kanaの使い方
イメージしやすいようにサンプルもつけますね。
それでは始めます。
mb_convert_kana関数とは
PHPには半角と全角を変換するためにmb_convert_kanaという関数が準備されています。
- 半角⇒全角
- 全角⇒半角
どちらにも対応しています。
mb_convert_kana以下のように記述します。
mb_convert_kana("変換する文字列", "オプション")
第一引数に変換する文字列、第二引数にオプションを指定する事によって変換内容を設定出来ます。
沢山ありますのでオプションについては次章で説明します。
mb_convert_kana関数のオプション
前章でmb_convert_kana関数にオプションをつける事によって変換内容を設定できることをお話しました。
因みにオプションには大文字小文字がありますが、
- 小文字⇒全角から半角へ変換
- 大文字⇒半角から全角へ変換
となっています。
それではどんなオプションがあるのか表にまとめましたので見ていきましょう。
[su_table]
変換種類 | オプション | 変換対象 |
全角⇒半角 | r | 英字 |
n | 数字 | |
a | 英数字 | |
s | スペース | |
k | カタカナ | |
h | ひらがな⇒カタカナ | |
半角⇒全角 | R | 英字 |
N | 数字 | |
A | 英数字 | |
S | スペース | |
K | カタカナ | |
H | カタカナ⇒ひらがな | |
全角⇒全角 | c | カタカナ⇒ひらがな |
C | ひらがな⇒カタカナ | |
特殊オプション | V | 濁点付き文字を1文字に変換(KやHオプションと一緒に使用) |
[/su_table]
沢山ありましたね。
この表を見ただけでは実際の使い方がイメージできないと思いますので、次はサンプルを使って説明していきます。
mb_convert_kanaの使い方
前章ではmb_convert_kanaを使用する際に使用するオプションの種類をお伝えしました。
この項目ではそのオプションをどのように指定するのかサンプルを使って説明していきます。
全角文字 ⇔ 半角文字の変換
まずは全角文字と半角文字の変換です。
オプションはKとkを使用します。
全角文字を半角に変換
[su_table]
変換データ | 期待する変換結果 |
サムライ | サムライ |
[/su_table]
echo mb_convert_kana("サムライ", "k");
結果 サムライ
半角文字を全角に変換
[su_table]
変換データ | 期待する変換結果 |
サムライ | サムライ |
[/su_table]
echo mb_convert_kana("サムライ", "K");
結果 サムライ
全角数字 ⇔ 半角数字の変換
続いて全角数字と半角数字の変換です。
オプションはNとnを使用します。
全角数字を半角に変換
[su_table]
変換データ | 期待する変換結果 |
5 | 5 |
[/su_table]
echo mb_convert_kana("5", "n");
結果 5
半角数字を全角に変換
[su_table]
変換データ | 期待する変換結果 |
5 | 5 |
[/su_table]
echo mb_convert_kana("5", "N");
結果 5
全角記号 ⇔ 半角記号の変換
最後に全角記号と半角記号の変換です。
オプションはAとaを使用します。
ハイフンを例にあげてみます。
全角記号を半角に変換
[su_table]
変換データ | 期待する変換結果 |
- | – |
[/su_table]
echo mb_convert_kana("-", "a");
結果 -
半角記号を全角に変換
[su_table]
変換データ | 期待する変換結果 |
– | - |
[/su_table]
echo mb_convert_kana("-", "A");
結果 -
この章で示したサンプルのオプションは一つしか指定していませんが、実際は複数指定できます。
例えば、全角カタカナと全角の数字の両方を半角にしたい場合はオプションは「nk」となります。
変換をまとめて指定できるのはとても便利ですね。
まとめ
本日はPHPの全角と半角の変換についてお話しました。
ただ表を見るだけで覚えるよりも、色んなオプションの組み合わせを実際試してみるほうが覚えやすいと思います。
ぜひローカル環境などを使って試しながら学習してみてください。
それでは、また。