IPアドレスとドメイン名を相互変換する

(1/1)
前回の「正規表現でIPアドレスかどうか調べる」の応用として、与えられた文字列がIPアドレスだったらドメイン名(ホスト名)へ変換、逆に、ドメイン名(ホスト名)だったらIPアドレスへ変換するプログラムを作ってみることにする。

(2021年8月28日)PHP8対応,大幅改訂

サンプル・プログラムの実行例

IPアドレスとドメイン名を相互変換する

サンプル・プログラム

圧縮ファイルの内容
ip2host.phpサンプル・プログラム本体

サンプル・プログラムの解説

0172: /**
0173:  * ホスト名どうか検査する
0174:  * @param   string $strチェックするテキスト
0175:  * @return  stringホスト名/FALSE(ホスト名ではない)
0176: */
0177: function is_host($str) {
0178:     $pat = "/(https?:\/\/)?([\-\_\.\!~\*'\(\)a-zA-Z0-9\;\?\@\&\=\+\$\,%#]+)/";
0179:                                                 //URLを表す正規表現
0180:     if (preg_match($pat$str$regs) != 1)      return FALSE;
0181: 
0182:     return $regs[2];
0183: }

プログラムの流れは、「./正規表現でURLをリンクに変換する」および「正規表現でIPアドレスかどうか調べる」とほとんど同じである。

与えられた文字列がIPアドレスか、ドメイン名かについては、正規表現によるパターンマッチングで判断する。
IPアドレスだったら、IP アドレス部分を取り出し、関数  gethostbyaddr  によってドメイン名に変換する。
ドメイン名だったら、ドメイン名部分を取り出し、関数  gethostbyname  によって IP アドレスに変換する。
いずれにもマッチしない場合は解析不能としてエラーメッセージを表示する。

さらに whois 検索を行いたいのであれば、pearNet_Whois::query() を利用するといいだろう。

参考サイト

(この項おわり)
header