1

所以我可能很笨,这可能很简单。我有一个包含大约 300 个域名的文本文件。我不想手动 ping 它们,所以我正在编写一个简单的小 php 脚本来 ping 域名返回 ip 地址,然后回显它们

我在文本文件中有域,我可以读取文件并输出名称,但是第二次尝试对它们执行 ping 操作,我得到的只是一个空白列表

  • 像我说的点可能错过了一些如此愚蠢的东西,但我感谢任何帮助

     <?php
    
     $names = file('sites.txt');
     foreach ($names as $name) {
     $testping = exec("ping  $name");
      echo '<li>' . $testping . '</li>';
     }
    
      ?>
    

    新代码* *

     $names = file('sites.txt');
     foreach ($names as $name) {
    
       $ip = gethostbyname($name);
    
    
    
      echo '<li>' . $ip . '</li>';
      }
    
       ?>
    
  • 4

    3 回答 3

    6

    如果您的最终目标是获取 IP 地址,请查看gethostbyname()

    $names = file('sites.txt');
     foreach ($names as $name) {
         $ip = gethostbyname($name);
         echo '<li>' . $ip. '</li>';
     }
    

    echo $ip;
    
    于 2012-06-01T20:58:01.947 回答
    1

    gethostbyname() 将返回您输入的任何域的 IP 地址。 http://php.net/manual/en/function.gethostbyname.php

    于 2012-06-01T20:58:23.793 回答
    0

    @BrandonBraner 正是我想做的!只有列表中的最后一个条目有效的原因是 PHP 正确读取了这些行,但在末尾附加了一个字符。最后一行没有这样做 - 不要问我为什么。也许是换行符。

    要绕过它,请使用 substr:

        $names = file('mysites.txt');
    foreach ($names as $name) {
    
       $mydomain = substr($name, 0, -1);
       $ip = gethostbyname($mydomain);
    
      echo '<li>' . $ip . '</li>';
      }
    

    为我做了诀窍。然后,您需要做的就是在域列表中添加一个空的最后一行。

    于 2013-02-07T16:13:21.557 回答