将网址列表转换为IP?

时间:2011-08-20 16:08:13

标签: php javascript

是否有任何将Url列表转换为ip列表的程序? 例如:

site1.com  ip1
site2.com  ip2
site3.com  ip3

8 个答案:

答案 0 :(得分:1)

php有dns查找。互联网上也有很多类似的服务

http://php.net/manual/en/function.gethostbyname.php

答案 1 :(得分:1)

在php中,您可以调用dns_get_record来获取与给定主机名关联的DNS条记录。请注意,每个域都与零个或多个IPv4以及零个或多个IPv6地址相关联,因此您可能希望返回一个地址数组。不过,这是

$domains = array('example.net', 'google.com', 'ipv6.google.com', 'example.404');
$ips = array_map(function($domain) {
    $records = dns_get_record($domain, DNS_AAAA);
    if (count($records) == 0) { // No IPv6 addresses, try IPv4
        $records = dns_get_record($domain, DNS_A);
        if (count($records) == 0) return false; // No mapping found
        return $records[0]['ip'];
    } else {
        return $records[0]['ipv6'];
    }
}, $domains);

var_export(array_combine($domains, $ips));

输出类似于:

array (
  'example.net' => '2001:500:88:200::10',
  'google.com' => '209.85.148.105',
  'ipv6.google.com' => '2a00:1450:4001:c01::93',
  'example.404' => false,
)

答案 2 :(得分:1)

使用php函数gethostbyname - 获取与给定Internet主机名**

对应的IPv4地址
<?php
$ip = gethostbyname('www.google.com');

echo $ip;
?>

你可能正在研究这样的事情:

$domains = "site1.com site2.com site3.com";
foreach(explode(" ", $domains) as $domain)
{
    echo $domain ." ".gethostbyname($domain);
}

<强>更新

如果域名有多个ip(例如:google.com),您可以使用gethostbynamel - 获取与给定Internet主机名对应的IPv4地址列表。

<?php
$hosts = gethostbynamel('www.example.com');
print_r($hosts);
?>


Array
(
    [0] => 74.125.225.19
    [1] => 74.125.225.16
    [2] => 74.125.225.18
    [3] => 74.125.225.20
    [4] => 74.125.225.17
)

答案 3 :(得分:0)

在互联网上进行一点搜索不会伤害任何人,可以通过谷歌搜索在php.net上找到“ip from url php”:

gethostbyname()

答案 4 :(得分:0)

首先从您的网址中提取主机,如果您不关心IPv6(tsk),请使用gethostbynamel

<?php
$hosts = Array(
   'www.google.com',
   'www.stackoverflow.com',
   'kera.name'
);

$ips = Array();
foreach ($hosts as $host) {
   if (($ip = gethostbynamel($host)) != FALSE)
      $ips[] = $ip;
   else
      $ips[] = Array();
}

print_r($ips);
?>

请注意,每个主机可能有多个IP。

ideone和codepad似乎都没有设置DNS分辨率,因此我可以为此提供现场演示。

答案 5 :(得分:0)

$file = fopen("hosts.txt","r") or exit("Unable to open file");

while(!feof($file))
{
    $host = fgets($file);
    echo "IP: " . gethostbyname($host) . "<br />";
}

fclose($file);

答案 6 :(得分:0)

您可以使用php函数gethostbyname将主机名解析为IPv4地址。

示例:

$hosts = file("hosts.txt");
$fp = fopen("hostsip.txt", "w");

foreach ($hosts as $host) {
  fwrite($fp, str_pad(trim($host), 20) . gethostbyname(trim($host)) . "\r\n");
}

etc...

答案 7 :(得分:0)

如果您只需处理文件并生成类似

的数组
array('site1.com' => 'ip1', 'site2.com' => 'ip2', 'site3.com' => 'ip3');

然后这段代码应该可以工作(抱歉,现在无法检查,但这应该有效):

$data = file_get_contents('hosts.txt');
$lines = explode("\n", $data);
$result = array();

foreach ($lines as $line) {
    $pieces = explode(' ', trim($line));
    if (!empty($pieces[0]) && !empty($pieces[1])) {
        $result[trim($pieces[0])] = trim($pieces[1]);
    }
}

因此在$ result中,您将使用url作为键,将ips作为值。

编辑:用PHP编写的代码