【PHP】gethostbyaddrの使い方
PHP関数のphp_gethostbyaddrを使用するとIPアドレスからホスト名を逆引きすることができる。
関数の説明・用途、使用例、注意事項、関連関数について以下にまとめる。
関数の説明・用途
php_gethostbyaddr(IPアドレス)
引数にIPアドレスを指定すると、ホスト名を文字列として取得できる。
関数の使用例
以下に掲載する使用例は、Ubuntu 20.04 LTSにインストールしたPHP 7.4.3環境において、PHPをコマンドラインで実行した例となる。
PHP関数のgethostbyaddrを実行した結果の画面キャプチャ。
この画面キャプチャをテキストにしたものは以下。コピペでコードを実行してみたい方は以下よりどうぞ。
$ php -r "print_r(gethostbyaddr('127.0.0.1'));echo PHP_EOL;"
localhost
$ php -r "print_r(gethostbyaddr('0:0:0:0:0:0:0:1'));echo PHP_EOL;"
ip6-localhost
$ php -r "print_r(gethostbyaddr('::1'));echo PHP_EOL;"
ip6-localhost
$ php -r "print_r(gethostbyaddr('202.248.37.74'));echo PHP_EOL;"
dns.nifty.com
$ php -r "print_r(gethostbyaddr('8.8.8.8'));echo PHP_EOL;"
dns.google
$ php -r "print_r(gethostbyaddr('8.8.4.4'));echo PHP_EOL;"
dns.google
$ php -r "print_r(gethostbyaddr('2001:4860:4860::8888'));echo PHP_EOL;"
dns.google
$ php -r "print_r(gethostbyaddr('2001:4860:4860::8844'));echo PHP_EOL;"
dns.google
$ php -r "print_r(gethostbyaddr('150.95.8.165'));echo PHP_EOL;"
s65.xrea.com
$ php -r "print_r(gethostbyaddr('0.0.0.0'));echo PHP_EOL;"
0.0.0.0
$ php -r "print_r(gethostbyaddr('a.b.c.d'));echo PHP_EOL;"
PHP Warning: gethostbyaddr(): Address is not a valid IPv4 or IPv6 address in Command line code on line 1
関数の注意事項
環境依存があるかどうかは確認できていないが、引数に指定するIPアドレスが、IPv4アドレス、IPv6アドレスのどちらであっても動作するようである。
IPアドレスに対応するホスト名が見つからない場合は、引数として指定したIPアドレスが戻り値(返り値)となるようだ。
IPv4又はIPv6のどちらにも当てはまらない、IPアドレスとしては無効な値を引数に指定した場合、PHPエラー(PHP Warning)となるようだ。
関連する関数
gethostbyaddrはIPアドレスからホスト名を求める関数(IPアドレスからホスト名を逆引きする関数)だが、その逆の働きをする関数(ホスト名からIPアドレスを生引きする関数)はgethostbynameとgethostbynamelとなる。
当ブログ内の関連記事
・【PHP】gethostbynameとgethostbynamelの違い