Я добавляю этот ответ поздно, так как этот ответ чаще всего появляется в Google ...
Вы можете использовать PHP для ...
$url = "www.google.co.uk";
$host = parse_url($url, PHP_URL_HOST);
// $host == "www.google.co.uk"
для захвата хоста , но не частного домена , на который ссылается хост. (Пример www.google.co.uk
- хост, но google.co.uk
- частный домен)
Чтобы получить приватный домен, вам необходимо знать список общедоступных суффиксов, к которым может зарегистрировать частный домен. Этот список куратор Mozilla на https://publicsuffix.org/
Приведенный ниже код работает, когда массив открытых суффиксов уже создан. Просто позвоните
$domain = get_private_domain("www.google.co.uk");
с оставшимся кодом ...
// find some way to parse the above list of public suffix
// then add them to a PHP array
$suffix = [... all valid public suffix ...];
function get_public_suffix($host) {
$parts = split("\.", $host);
while (count($parts) > 0) {
if (is_public_suffix(join(".", $parts)))
return join(".", $parts);
array_shift($parts);
}
return false;
}
function is_public_suffix($host) {
global $suffix;
return isset($suffix[$host]);
}
function get_private_domain($host) {
$public = get_public_suffix($host);
$public_parts = split("\.", $public);
$all_parts = split("\.", $host);
$private = [];
for ($x = 0; $x < count($public_parts); ++$x)
$private[] = array_pop($all_parts);
if (count($all_parts) > 0)
$private[] = array_pop($all_parts);
return join(".", array_reverse($private));
}