Извлечение IP-адресов из имен хостов

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

Благодарю. 🙂

0

Решение

Вы перезаписываете значение $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 ($r = mysql_fetch_array($q)) {
$ip = gethostbyname($r['col1']. ".zzz");
echo '<li>' . $r['col1']. '.zzz' . ' is at address ' . $ip. '</li>';
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]