gethostbyname

関数の概要

gethostbynameはPHPでホスト名(ドメイン名)から対応するIPv4アドレスを取得するための組み込み関数です。ネットワークプログラミングやサーバー間通信の際によく使われ、ドメイン名を直接扱うのではなくIPアドレスで処理するときに役立ちます。

パラメータの説明

  • hostname(文字列): IPアドレスを調べたいホスト名(例: www.example.com)を指定します。

戻り値

指定したホスト名のIPアドレス(IPv4形式の文字列)を返します。もしホスト名が解決できなかった場合は、引数で渡したホスト名そのものを返します。

使用例

基本的な使い方

<?php
$ip = gethostbyname("www.google.com");
echo "GoogleのIPアドレスは: " . $ip;
?>

この例では、「www.google.com」のIPアドレスを取得し、画面に表示しています。問題なければ実際のIPアドレスが出力されます。

存在しないホスト名の処理

<?php
$host = "nonexistent.domain.test";
$ip = gethostbyname($host);
if ($ip === $host) {
    echo "ホスト名「{$host}」は解決できませんでした。";
} else {
    echo "IPアドレスは: " . $ip;
}
?>

存在しないホスト名を指定した場合、返り値が引数と同じになるため、それを利用してエラー処理が可能です。

複数のドメイン名をIPアドレスに変換する

<?php
$hosts = ["www.yahoo.co.jp", "www.example.com", "invalid.host"];
foreach ($hosts as $host) {
    $ip = gethostbyname($host);
    if ($ip === $host) {
        echo "{$host} は解決できませんでした。<br>";
    } else {
        echo "{$host} のIPアドレス: {$ip}<br>";
    }
}
?>

配列で複数のホスト名をループ処理し、それぞれのIPアドレスを取得・表示します。解決不可のホスト名はメッセージを出力します。

関連する関数

  • gethostbynamel(): ホスト名に対応するすべてのIPアドレスを配列で取得します。
  • gethostbyaddr(): IPアドレスからホスト名を取得します。
  • dns_get_record(): DNSレコードの詳細情報を取得します。

まとめ

gethostbynameはPHPでホスト名からIPv4アドレスを簡単に取得できる便利な関数です。ネットワークプログラミングの基本として押さえておきたい関数であり、例外処理もシンプルに行えます。複数ホスト名から一括でIPを調べたい場合にも活用でき、関連関数と合わせて使うことでより柔軟なネットワーク処理が可能です。