Because We Love Happy Coding

フリーライターからエンジニアへ。発信力だけあり余ってる感じ

全角カナを含むかどうかPHPで判定する

仕事で「全角カナを含むかどうか判定する」という場面に遭遇した。正規表現で解決することにして、webの情報を探す。

目次

文字コードの設定から

mb_regex_encoding("UTF-8");

「含む」とか「含まない」とか

マッチングにはmb_ereg()またはpreg_match()を使う。

mb_ereg("^[ァ-ヶー]+$", $kana)というのが紹介されていたのだけれど、ちょっと挙動が想定と違うのでよく気をつけて見たら、行頭と行末のメタ文字が入っているので、これだと「$kanaはすべて全角カナ」にマッチする。ような気がする。

^$を除くと、「$kanaに全角カナが含まれている」にマッチする

mb_ereg("[ァ-ヶー]+", $kana)

サンプル

書いてみた。

<?php
mb_regex_encoding("UTF-8");

$kana="アイウエオ";

if (mb_ereg("^[ァ-ヶー]+$", $kana)) {//$kanaはすべて全角カナ
  echo $kana.'は全角カナのみで構成されています'."<br>\n";
} else {
  echo $kana.'には全角カナでない文字が含まれています'."<br>\n";
}

$kana="あいウエお";

if (mb_ereg("[ァ-ヶー]+", $kana)) {// $kanaに全角カナが含まれている
  echo $kana.'は全角カナを含んでいます'."<br>\n";
} else {
  echo $kana.'には全角カナが含まれていせん'."<br>\n";
}

参考記事