このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。
19-1 半角カタカナを全角に・全角英数を半角にしたい!
個人情報を入力してもらう際、色々と厄介なことがあります。 なかでも面倒なのが、半角カタカナと全角の英数です。 電話番号や郵便番号は半角で入力してもらいたいですよね メールアドレスを全角英数で入力する人は少ないと思うのですが、それでもいるのですね。 入力欄の隣に「全角カタカナ」とが「半角英数で!!」と書いておいても、100%大丈夫なわけではありません。
"mb_convert_kana" はすごい!
この関数があればすべて解決です。半角・全角・カタカナ・ひらがな等、一気に変換してくれるのです。
$data = mb_convert_kana($data,"a");
r | 「全角」英字を「半角」に変換 ABC⇒ABC |
R | 「半角」英字を「全角」に変換 ABC⇒ABC |
n | 「全角」数字を「半角」に変換 123⇒123 |
N | 「半角」数字を「全角」に変換 123⇒123 |
a | 「全角」英数字を「半角」に変換 ABC123⇒ABC123 |
A | 「半角」英数字を「全角」に変換 ABC123⇒ ABC123 |
s | 「全角」スペースを「半角」に変換 _⇒_ |
S | 「半角」スペースを「全角」に変換 _⇒_ |
k | 「全角カタカナ」を「半角カタカナ」に変換 カタカナ⇒カタカナ |
K | 「半角カタカナ」を「全角カタカナ」に変換 カタカナ⇒カタカナ |
h | 「全角ひらがな」を「半角カタカナ」に変換 ひらがな⇒ヒラガナ |
H | 「半角カタカナ」を「全角ひらがな」に変換 カタカナ⇒かたかな |
c | 「全角カタカナ」を「全角ひらがな」に変換 カタカナ⇒かたかな |
C | 「全角ひらがな」を「全角カタカナ」に変換 ひらがな⇒ヒラガナ |
V | 濁点付きの文字を一文字に変換"K", "H" と共に使用 (半角は濁点が1文字) |
注:スペースの変わりにアンダーバーで表示しています。実際はアンダーバーは使いません。 アルファベットはオプションで指定するのですが、複数を組み合わせて使うことができます。
$data = mb_convert_kana($data,"aKCV");
これで「全角」英数字を「半角」に変換、「半角カタカナ」を「全角カタカナ」に変換、「全角ひらがな」を「全角カタカナ」に変換、濁点付きの文字を一文字に変換が一度にできるのです。これはすばらしい!!
「使えない!」 時は作る!
これを使えば確かに変換してくれるのですが、現実はあまくないですねぇ。サーバーによってはPHPのバージョンが低かったり、php.ini の設定が必要なので、mb系の関数が使えなかったりします。つまりいつでもこの関数が使えるわけではないのです。 そこで今回の本題は mb_convert_kana を使わないで、この変換を実現する関数を作ってしまおうということです。 ここで使用するのは strtr という関数です。これはデータの中に含まれる特定の文字列を指定した文字列に置き換えるという働きをします。下の例では $data の中の文章中に「ア」があれば「ア」と全角カタカナに置き換えるのです。
$data = strtr($data, "ア", "ア");
この方法では、一つの文字ごとに関数で置き換えなければなりません。これなら、str_replace でも同じことができます。しかし、この関数は配列と組み合わせることで多くの文字を一気に書き換えてくれるのです。
$kana = array("ア"=>"ア","イ"=>"イ","ウ"=>"ウ"); $change = strtr("アイウエオカキクケコ", $kana);
この結果 $change は「アイウエオカキクケコ」となります。「アイウ」だけは全角に変換してくれる訳です。 50程度のカタカナを配列に入れて作成するのは、それほどの労力ではありません。それに関数にしておけば何度でも使えます。
⇒こんな感じ |