function getDomainName(string $url): string|bool {
if (empty($url) || !filter_var($url, FILTER_VALIDATE_URL)) {
return false;
}
$host = parse_url($url, PHP_URL_HOST);
$parts = explode('.', $host);
$count = count($parts);
if ($count > 2) {
$tld = $parts[$count - 1]; // eg: "uk" or "com"
$sld = $parts[$count - 2]; // eg: "co" or "example"
// top-level domain is 2 letters (eg: uk, au, br, za) AND second-level domain is 2-3 letters (eg: co, com, org, net, edu)
if (strlen($tld) === 2 && (strlen($sld) === 2 || strlen($sld) === 3)) {
// Multi-part extension: Grab 3 parts (eg: domain.co.uk)
$domain = ($count >= 3) ? $parts[$count - 3] . '.' . $sld . '.' . $tld : $host;
} else {
// Standard extension: Grab 2 parts (eg: domain.com)
$domain = $sld . '.' . $tld;
}
} else {
// Host already 2 parts (eg: domain.com or domain.co)
$domain = $host;
}
return $domain;
}
PHP: Get Domain Name from URL
Leave a reply