checkdnsrr() 函数是一个内置的PHP函数,可用于检查指定的域名是否存在于 DNS (域名系统)中。该函数接受一个域名作为参数,并返回一个布尔值,指示该域名是否存在。例如:
if (checkdnsrr('example.com', 'A')) {
echo '域名 example.com 存在';
} else {
echo '域名 example.com 不存在';
}
需要注意的是,checkdnsrr() 函数仅检查域名是否存在于 DNS 中,而不检查该域名是否可访问或是否由某人拥有。网站已停机或域名所有权已转移,该函数仍会返回 true。
get_headers() 函数是另一个内置的PHP函数,可用于获取指定 URL 的 HTTP 头信息。能成功获取头信息,则代表该域名是存在的。例如:
$headers = get_headers('https://example.com');
if ($headers !== false) {
echo '域名 example.com 存在';
} else {
echo '域名 example.com 不存在';
}
使用 get_headers() 函数可以更准确地检查域名是否存在,因为它不仅检查 DNS 记录,还检查域名是否能够成功返回 HTTP 响应。但是,网站返回 404 Not Found 或其他错误响应,该函数仍会返回 true。
fsockopen() 函数是一个底层的 PHP 函数,可用于创建一个 TCP/IP 套接字连接。您可以使用它来尝试连接到指定的域名,连接成功,则表示该域名存在。例如:
$fp = @fsockopen('example.com', 80, $errno, $errstr, 10);
if ($fp) {
echo '域名 example.com 存在';
fclose($fp);
} else {
echo '域名 example.com 不存在';
}
使用 fsockopen() 函数可以更可靠地检查域名是否存在,因为它实际尝试连接到该域名的服务器。连接成功,则说明该域名确实存在。但是,域名存在但服务器未响应,该函数也会返回 false。
在 PHP 中检查域名是否存在有多种方法,每种方法都有其优缺点。checkdnsrr() 函数是最简单的方法,但只检查 DNS 记录;get_headers() 函数更准确,但可能会受错误响应的影响;fsockopen() 函数最可靠,但可能会受服务器响应时间的影响。您可以根据具体需求选择合适的方法。