PHPでIPアドレス⇔ホスト名相互変換(Windowsアプリ版)

(1/1)
PHP で「IP アドレスとホスト名を相互変換する」プログラムを作成したが、これを Windows アプリに移植する。

サンプル・プログラム

PHPでWindowsアプリ開発:IPアドレス⇔ホスト名相互変換

プログラムの解説:マッピング

0064: /**
0065:  * IPアドレスかどうか検査する
0066:  * @param string $str チェックするテキスト
0067:  * @return string IPアドレス/FALSE(IPアドレスではない)
0068: */
0069: function is_ipadr($str) {
0070:     $pat = "/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/";
0071:                                                 //IPアドレスを表す正規表現
0072:     preg_match($pat$str$regs);
0073: 
0074:     //定義域チェック (0 ≦ IP ≦ 255)
0075:     for ($i = 1; $i <= 4; $i++) {
0076:         if (!isset($regs[$i]))   return FALSE;
0077:         if ($regs[$i] < 0 || $regs[$i] > 255)   return FALSE;
0078:     }
0079: 
0080:     return $regs[0];
0081: }
0082: 
0083: /**
0084:  * ホスト名どうか検査する
0085:  * @param string $str チェックするテキスト
0086:  * @return string ホスト名/FALSE(ホスト名ではない)
0087: */
0088: function is_host($str) {
0089:     $pat = "/(https?:\/\/)?([\-\_\.\!~\*'\(\)a-zA-Z0-9\;\?\@\&\=\+\$\,%#]+)/";
0090:                                                 //URLを表す正規表現
0091:     if (preg_match($pat$str$regs) != 1)      return FALSE;
0092: 
0093:     return $regs[2];
0094: }
0095: 
0096: /**
0097:  * IPアドレスをホスト名に、ホスト名をIPアドレスに変換する
0098:  * @param int  $window ウィンドウID
0099:  * @return なし
0100: */
0101: function convert($window) {
0102:     $sour = wb_get_text(wb_get_control($window, IDC_SOUR_EDIT));
0103:     $sour = trim($sour); //余計な空白を除く
0104: 
0105:     if (($ip = is_ipadr($sour)) != FALSE) {
0106:         $dest = @gethostbyaddr($ip);
0107:         if ($ip == $dest)   $dest = FALSE;
0108:     } else if (($host = is_host($sour)) != FALSE) {
0109:         $dest = @gethostbyname($host);
0110:         if ($host == $dest$dest = FALSE;
0111:     } else {
0112:         $dest == FALSE;
0113:     }
0114:     if ($dest == FALSE$dest = 'エラー:変換に失敗';
0115: 
0116:     wb_set_text(wb_get_control($window, IDC_DEST_EDIT), $dest);
0117: }

プログラムは、「IP アドレスとホスト名を相互変換する」で作ったユーザー関数 is_hostis_ipadr をそのまま利用している。
また、メインプログラムの部分をユーザー関数 convert にすることで、イベント処理から呼びやすくした。

コンパイル

コマンドラインから "bamcompile ip2hostwin.bcp" を実行する。コンパイルが完了すると、"ip2hostwin.exe" が生成される。"ip2hostwin.exe" は、DLL 不要で、単独で動作する EXE プログラムである。

参考サイト

(この項おわり)
header