PHP - 从主机名中检索 IP

PHP - Retrieving IPs from host names

我正在从 table 字段中检索值并向其附加一个字符串以获取主机名列表。然后我想遍历所有主机名和 return 每个主机的 IP。

以下代码获取我的主机名:

$sql = "select * from table order by col1 asc";

$q = mysql_query($sql) or die(mysql_error() ." " . $sql);

// Loop through table and append .zzz to each col1.
while ($r = mysql_fetch_array($q)) {

    $host_name = $r['col1']. ".zzz" . " ";

    //echo $host_name;
}

以上代码可以正常工作,但我不确定如何检索每个主机名的 IP。我一直在尝试 gethostbyname 但无法使其正常工作。我知道我必须遍历主机名值。我会使用 foreach 循环吗?我已经尝试过了,但无法正常工作。有人可以给我一些指示吗?

我尝试了以下方法,但 return 没有任何效果:

$host_name_ip = $host_name;
foreach ($host_name_ip as $name) {
    $ip = gethostbyname($name);
    echo '<li>' . $ip. '</li>';
}

我也试过这个……还是不行:

foreach($host_name as $url) {
    $ip = gethostbyname(trim($url)); 
}

echo $ip;

谢谢。 :)

您正在覆盖初始循环中 $host_name 的值。将其更改为一个数组,您的 foreach 将起作用。

while ($r = mysql_fetch_array($q)) {
    $host_name[] = $r['col1']. ".zzz";
}

要在循环中打印主机名及其地址,请使用:

foreach ($host_name_ip as $name) {
    $ip = gethostbyname($name);
    echo '<li>' . $name . ' is at address ' . $ip. '</li>';
}

您甚至不需要将名称存储在数组中。只需在 while 循环中执行您需要的所有操作即可。

while ($r = mysql_fetch_array($q)) {
    $ip = gethostbyname($r['col1']. ".zzz");
    echo '<li>' . $r['col1']. '.zzz' . ' is at address ' . $ip. '</li>';
}