是否有任何将Url列表转换为ip列表的程序? 例如:
site1.com ip1
site2.com ip2
site3.com ip3
答案 0 :(得分:1)
php有dns查找。互联网上也有很多类似的服务
答案 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”:
答案 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编写的代码