2

テキストファイルから収集された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アドレスではありません...」
最後を除くすべてのインスタンスで、正しい結果が返されます。助けてくれてありがとう。

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 に答える