我正在尝试遍历由文本文件收集的IP地址组成的数组。最终目标是检索每个IP的主机名。我的问题是我只从阵列中的最后一个IP获得结果。我认为这很简单,但我显然遗漏了一些东西。
<?php
$thefile = 'myfile';
$arr = file($thefile.".txt");
foreach ($arr as $data) {
echo $hostname = gethostbyaddr($data);" <br>";
?>
文本文件包含几个我知道有关联名称的IP,但是我得到了
“警告:gethostbyaddr()[function.gethostbyaddr]:地址不是...中的有效IPv4或IPv6地址” 对于每个实例,但最后一个,返回正确的结果。谢谢你的帮助。
答案 0 :(得分:1)
<?php
$thefile = 'myfile';
$arr = file($thefile . '.txt',FILE_SKIP_EMPTY_LINES);
foreach ($arr as $data)
{
$hostname = gethostbyaddr(trim($data));
echo $hostname . "<br>";
}
?>
您可能有换行符或某些空格,因此请在传递给函数之前使用trim()删除它们。
答案 1 :(得分:0)
假设您的输入文件正常,如下所示:
100.100.100.100
100.100.100.101
100.100.100.102
根据file
的PHP手册:“返回数组中的文件。数组的每个元素对应文件中的一行,仍然附加换行符。” / p>
你需要删除这些换行符,使用trim
应该这样做。