Net_UserAgent_Mobile_UserIDをリリースしました
携帯電話の固有IDを扱うライブラリをopenpearでリリースしました。
Net_UserAgent_Mobile_UserID \ Package \ Openpear
先日公開された「携帯各キャリアの固有IDについて (全キャリア対応) - ぱらめでぃうす」がすばらしかったので、このまとめをもとにPEARパッケージをでっちあげてみました。
基本的な使い方はこんな感じです。
<?php require_once 'Net/UserAgent/Mobile/UserID.php'; try { $userid = Net_UserAgent_Mobile_UserID::factory(); } catch (Net_UserAgent_Mobile_UserID_Exception $e) { var_dump($e->getMessage()); exit; } // ID本体 echo $userid->getID(); // 接頭文字 echo $userid->getPrefix(); // 解析前のデータ echo $userid->getRawData();
以下のような値が取得されます。
SoftBank
種類 | 接頭文字 | ID本体 |
---|---|---|
UID | なし | 英数16桁 |
端末シリアル番号 | SN | 英数11桁or15桁 |
e-mobile
種類 | 接頭文字 | ID本体 |
---|---|---|
UID | u | 英数17桁 |
先頭の固定文字を接頭文字としてID本体と分離してますが、余計なお世話かもしれません..。
ほかにユーザーIDの判定方法を差し替えたりなど。
<?php require_once 'Net/UserAgent/Mobile/UserID.php'; require_once 'Net/UserAgent/Mobile/UserID/Abstract.php'; // ?id=aa-12345みたいなの class Hoge extends Net_UserAgent_Mobile_UserID_Abstract { public function getID() { if (array_key_exists('id', $_REQUEST)) { return $_REQUEST['id']; } else { return null; } } public function validateID($id) { return preg_match('/^[a-z}{2}\-[0-9]{5}$/', $id); } protected function _parseID($id) { return array( substr($id, 0, 2), substr($id, 3), ); } } Net_UserAgent_Mobile_UserID::setUserIDModules('DoCoMo', new Hoge());
バリデーションだけ単体で使うこともできます。
<?php require_once 'Net/UserAgent/Mobile/DoCoMo/ImodeID.php'; if (Net_UserAgent_Mobile_ImodeID::validateID('xxxxxxx')) { echo "ok"; } else { echo "ng"; }
Net_UserAgent_MobileでもユーザーIDは取得できるんですが、インターフェースが統一されてたらうれしいかなーとか、NDAな処理は呼出し側で追加できたらいいなーとか、そんな感じで作ってみました。