【PHP】gethostbyaddrの使い方

PHP関数のphp_gethostbyaddrを使用するとIPアドレスからホスト名を逆引きすることができる。

関数の説明・用途、使用例、注意事項、関連関数について以下にまとめる。

関数の説明・用途

php_gethostbyaddr(IPアドレス)

引数にIPアドレスを指定すると、ホスト名を文字列として取得できる。

関数の使用例

以下に掲載する使用例は、Ubuntu 20.04 LTSにインストールしたPHP 7.4.3環境において、PHPをコマンドラインで実行した例となる。

PHP関数のgethostbyaddrを実行した結果

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の違い

前へ

【PHP】gethostbynameとgethostbynamelの違い

次へ

炭焼トリコでチキン南蛮定食を食べた感想