gethostbynamel

(PHP 4, PHP 5, PHP 7, PHP 8)

gethostbynamel获取与给定 Internet 主机名对应的 IPv4 地址列表

说明

gethostbynamel(string $hostname): array|false

返回由 hostname 指定的 Internet 主机解析到的 IPv4 地址列表。

参数

hostname

主机名。

返回值

返回一个 IPv4 地址数组,如果无法解析 hostname,则返回 false

范例

范例 #1 gethostbynamel() 范例

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

上面的例子将输出

Array
(
    [0] => 192.0.34.166
)

参见

  • gethostbyname() - 获取与给定 Internet 主机名对应的 IPv4 地址
  • gethostbyaddr() - 获取与给定 IP 地址对应的 Internet 主机名
  • checkdnsrr() - 检查与给定 Internet 主机名或 IP 地址对应的 DNS 记录
  • getmxrr() - 获取与给定 Internet 主机名对应的 MX 记录
  • named(8) 手册页

添加说明

用户贡献说明 5 个说明

9
ab at null dot ixo dot ca
8 年前
如果对本地主机名称使用 gethostbyname 始终返回 127.0.0.1,但您想要 DNS 地址,只需在名称末尾添加一个点。例如:

$foo = gethostbynamel("myhost.example.com");
print_r($foo);

...将返回:
数组
(
[0] => 127.0.0.1
)

然后在名称末尾添加一个点

$foo = gethostbynamel("myhost.example.com.");
print_r($foo);

...现在您将获得类似于
数组
(
[0] => 172.217.1.99
)
-2
info at methfessel-computers.de
17 年前
解决方法很简单。只需在 URL 末尾添加一个 .(点)即可正确解析名称。

没有这个点,PHP 会认为它是一个本地域的子域,因此会返回“本地 IP”。
-2
Skyld at o2 dot co dot uk
19 年前
显然,在某些情况下,并非所有 IP 在检查主机名时都可能有用。有时,并非所有 IP 都能工作。这段代码将检查列表中第一个可用的 IP。或者至少它应该这样做 - 我还没有时间测试它。
需要域参数,端口和要检查的最大 IP 数量是可选的。
如果未设置端口,它将检查 HTTP 端口 80,如果未设置要检查的最大 IP 数量,它将只检查列表中的前 10 个 IP。
希望对某些人有所帮助。

<?php
function checkhostlist($domain, $port = 80, $maxipstocheck = 10) {
?
$hosts = gethostbynamel($domain);
for (
$chk=0;$chk<$maxipstocheck;$chk++) {
if (isset(
$hosts[$chk])) {
$th = fsockopen($domain, $port);
if (
$th) {
fclose($th);
return
$hosts[$chk];
break;
}
}
}
}
?>
-3
webdev at concraption dot com
18 年前
在 PHP 5.0.4 中,如果查找失败,gethostbynamel 返回空字符串而不是 false。解决此错误的一个简单方法是在 IF 块中使用 is_array()

<?
$hosts = gethostbynamel($hostname);
if (is_array($hosts)) {
echo "主机 ".$hostname." 解析为:<br><br>";
foreach ($hosts as $ip) {
echo "IP: ".$ip."<br>";
}
} else {
echo "主机 ".$hostname." 未绑定到任何 IP。";
}
?>
-5
匿名
6 年前
不要使用 http 协议,gethostbynamel 函数中
To Top