仕事で「全角カナを含むかどうか判定する」という場面に遭遇した。正規表現で解決することにして、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"; }