mb_convert_kanaを使って濁点や半濁点を除去してみる

まっちー

まっちー

どれくらい使う機会があるのかは分からないですけど、ここ最近の自分はそれなりにこのやり方を多用していたので、忘れないうちにメモ。

mb_convert_kanaを使うと全角文字を半角にできたり半角文字を全角にできたり急に異性にモテるようになったりします。嘘です。異性と接することもなく平日も土日もひたすらコーディングばっかりしてたってモテるはずがない。

mb_convert_kanaで全角ひらがなを半角にすると、濁点も1文字として変換される。だからそれをもう一回全角に変換してやれば濁点や半濁点のない全角文字が取得できる。ある文字列があ行なのかか行なのか、そういうのを判別するときに使えると思う。

では、文字列がか行かどうかを判定してみましょう。

//判定用の配列
$array = array('か', 'き', 'く', 'け', 'こ');

$str = 'ゴジラ';

//全角カタカナを半角カタカナに変換
$str = mb_convert_kana($str, 'k', 'UTF-8');

//半角カタカナを全角ひらがなに変換
$str = mb_convert_kana($str, 'H', 'UTF-8');

//先頭の1文字を取得
$str = mb_substr($str1, 0, 1);

//配列の中に該当する文字があるかどうかを判定
if(in_array($str, $array) == true) {

 € € € echo $str.'は「か行」です';

}

8行目の時点で$strの中身は「ゴジラ」になる。このとき、「コ」や「シ」と「゛」はそれぞれが1文字として分けられている。そして11行目でそれを全角ひらがなに変換すると、$strは「こ゛し゛ら」になるので、その文字列の先頭の1文字だけを取得すれば、$strの中身は「こ」になる。in_array関数は対象の配列の中に該当する文字(今回の場合は「こ」)があるかどうかを判定し、あったらtrueを返す。今回は配列の中に「こ」があるので、結果はtrueになる。

こんな感じで、各行なんかの判定をすれば良いのではないかな・・・と思う。いや、もちろん配列の中に濁点なんかも全部書いたって良いんだけどね。↓みたいな感じで。

$array1 = array('か', 'き', 'く', 'け', 'こ', 'が', 'ぎ', 'ぐ', 'げ', 'ご');

でも何かちょっとあれじゃん?

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む