PHP - получение IP-адресов из имен хостов - PullRequest
0 голосов
/ 19 ноября 2018

Я получаю значения из поля таблицы и добавляю к нему строку, чтобы получить список имен хостов.Затем я хотел бы перебрать все имена хостов и вернуть 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?Я попробовал это и не могу заставить это работать.Может кто-нибудь дать мне несколько советов, пожалуйста.

Я пробовал следующее, но ничего не возвращается:

$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;

Спасибо.:)

1 Ответ

0 голосов
/ 19 ноября 2018

Вы перезаписываете значение $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>';
}
...