携帯アドレスドメインから判定

引用先
http://d.hatena.ne.jp/yoshi-ken/20080102

em.nttpnet.ne.jp / pipopa.ne.jp / docomo.ne.jp / softbank.ne.jp / ezweb.ne.jp / sky.tu-ka.ne.jp / sky.tkk.ne.jp / sky.tkc.ne.jp / t.vodafone.ne.jp / k.vodafone.ne.jp / d.vodafone.ne.jp / h.vodafone.ne.jp / c.vodafone.ne.jp / r.vodafone.ne.jp / n.vodafone.ne.jp / s.vodafone.ne.jp / q.vodafone.ne.jp / jp-d.ne.jp / jp-h.ne.jp / jp-t.ne.jp / jp-k.ne.jp / jp-r.ne.jp / jp-s.ne.jp / jp-n.ne.jp / jp-q.ne.jp / jp-c.ne.jp / t2.ezweb.ne.jp / t3.ezweb.ne.jp / t4.ezweb.ne.jp / t5.ezweb.ne.jp / t6.ezweb.ne.jp / t7.ezweb.ne.jp / t8.ezweb.ne.jp / t9.ezweb.ne.jp / pdx.ne.jp / dk.pdx.ne.jp / di.pdx.ne.jp / dj.pdx.ne.jp / wm.pdx.ne.jp / bandai.jp
これをPHPの関数にすると、以下になります。
珍しいメアドの場合には後で処理するようにし、平均的なコストが減るようにしました。

<?php
function is_mobile_mail ($string) {
    if (preg_match("/@(docomo|softbank|ezweb|[dhtkrsnqc].vodafone|pdx|d[kij].pdx|wm.pdx).ne.jp$/i", $string)) return TRUE;
    elseif (preg_match("/@(em.nttpnet|pipopa|.*sky.tu-ka|.*sky.tk[ck]|jp-[dhtkrsnqc]|t[2-9].ezweb).ne.jp$/i", $string)) return TRUE;
    elseif (preg_match("/@bandai.jp$/i", $string)) return TRUE;
    else return FALSE;
}