我尝试使用gethostbyaddr制作简单的php脚本来显示主机名。假设ip xxx.xxx.xxx.4将显示主机名,而ip xxx.xxx.xxx.5将显示主机名。我的问题是,如果没有主机名声明怎么办?谢谢。
$ips = array("xxx.xxx.xxx.4","xxx.xxx.xxx.5");
foreach ($ips as $value) {
if ($hostip = @gethostbyaddr( $value )) {
echo "$hostip<br>";
}
else {
//show no hostname statement here
}
}
答案 0 :(得分:1)
根据manual:
成功时返回主机名,失败时返回未修改的ip_address,或者输入格式错误时返回FALSE。
所以你可以这样做:
<?php
$ips = array("xxx.xxx.xxx.4","xxx.xxx.xxx.5");
foreach ($ips as $value) {
$hostname = gethostbyaddr($value);
if ($hostname === false) { //malformed input
echo 'IP "' . $value . '" was malformed<br />';
} else if ($hostname === $value) { //failure
echo 'Hostname could not be found for "' . $value . '"<br />';
} else { //success
echo 'Hostname: ' . $hostname . '<br />';
}
}
?>