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

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

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

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

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

サンプル・プログラム

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

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

 172: /**
 173:  * ホスト名どうか検査する
 174:  * @param   string $str チェックするテキスト
 175:  * @return  string ホスト名/FALSE(ホスト名ではない)
 176: */
 177: function is_host($str) {
 178:     $pat = "/(https?:\/\/)?([\-\_\.\!~\*'\(\)a-zA-Z0-9\;\?\@\&\=\+\$\,%#]+)/";
 179:                                                 //URLを表す正規表現
 180:     if (preg_match($pat, $str, $regs!1)     return FALSE;
 181: 
 182:     return $regs[2];
 183: }

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

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

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

参考サイト

(この項おわり)
header