2

我正在尝试遍历一个由从文本文件收集的 IP 地址组成的数组。这样做的最终目标是检索每个 IP 的主机名。我的问题是我只能从阵列中的最后一个 IP 获得结果。我想这会很简单,但我显然错过了一些东西。

<?php
$thefile = 'myfile';
$arr = file($thefile.".txt");

foreach ($arr as $data) {
echo $hostname = gethostbyaddr($data);" <br>";
?>

文本文件包含几个我知道有关联名称的 IP,但我得到了

“警告:gethostbyaddr() [function.gethostbyaddr]: Address is not a valid IPv4 or IPv6 address in...”
除了最后一个实例之外的每个实例,它返回正确的结果。谢谢你的帮助。

4

2 回答 2

1
<?php

$thefile = 'myfile';
$arr = file($thefile . '.txt',FILE_SKIP_EMPTY_LINES);

foreach ($arr as $data) 
{
    $hostname = gethostbyaddr(trim($data));
    echo $hostname . "<br>";
}

?>

您可能有换行符或一些空格,因此在传递给函数之前使用trim()删除它们。

于 2013-02-13T15:31:39.643 回答
0

假设您的输入文件很好,看起来像这样:

    100.100.100.100
    100.100.100.101
    100.100.100.102

根据 PHP 手册file:“返回数组中的文件。数组的每个元素对应于文件中的一行,换行符仍然附加。”

你需要去掉那些换行符,使用trim应该可以解决问题。

于 2013-02-13T15:35:05.883 回答