我在这里有这个代码:
// get host name from URL
preg_match('@^(?:http://)?([^/]+)@i',
"http://www.joomla.subdomain.php.net/index.html", $matches);
$host = $matches[1];
// get last two segments of host name
preg_match('/[^.]+\.[^.]+$/', $host, $matches);
echo "domain name is: {$matches[0]}\n";
输出将为php.net
我只需要php
而不需要.net
答案 0 :(得分:3)
虽然这里的正则表达式很好,但我建议parse_url
$host = parse_url('http://www.joomla.subdomain.php.net/index.html', PHP_URL_HOST);
$domains = explode('.', $host);
echo $domains[count($domains)-2];
这适用于TLD,如.com,.org,.net等,但不适用于.co.uk或.com.mx。你需要一些逻辑(很可能是一个tld的数组)来解析它们。
答案 1 :(得分:2)
将第二个正则表达式的第一部分分组为/([^.]+)\.[^.]+$/
,$matches[1]
将为php
答案 2 :(得分:1)
最新答案,它不适用于子域,但适用于任何tld
(co.uk,com.de等):
$domain = "somesite.co.uk";
$domain_solo = explode(".", $domain)[0];
print($domain_solo);
答案 3 :(得分:-1)
这很简单:
function get_tld($domain) {
$domain=str_replace("http://","",$domain); //remove http://
$domain=str_replace("www","",$domain); //remowe www
$nd=explode(".",$domain);
$domain_name=$nd[0];
$tld=str_replace($domain_name.".","",$domain);
return $tld;
}
要获取域名,只需return $domain_name
,它仅适用于顶级域名。如果是子域,您将获得子域名。