如何从url获取Domain.ext? PHP prase

时间:2011-03-08 02:59:15

标签: php apache apache2

如果我们有

 $url = "http://subdomain.domin.ext/somepath/file.php";

如何获取domain.ext

当我使用

 $parse = parse_url($url);
 $domin = $parse[host];

然后 echo "$domain"; //this returns subdomain.domin.ext

有没有想法获得domain.ext?

3 个答案:

答案 0 :(得分:1)

$url = "http://subdomain.domin.ext/somepath/file.php";
$parse = parse_url($url);
$domain = $parse['host'];
$lastDot = strrpos($domain,'.');
$ext = substr($domain,$lastDot+1);

这会让你“分机”(例如“com”或“gov”)。在类似amazon.co.uk的情况下,它会给你“英国”。如果您需要“co.uk”,则需要添加逻辑来检测某些顶级域名(例如“英国”),并在这些案例中转到第二个点。

答案 1 :(得分:0)

<?php
$url = "http://subdomain.domain.ext/somepath/file.php";
$parse = parse_url($url);
$domain = substr(strrchr($parse['host'], '.'), 1);
$domain = substr(strrchr(substr($parse['host'], 0, -strlen($domain)), '.'), 1). '.'. $domain;
if(in_array(strstr($domain, '.', true), array('co', 'com', 'net', 'org', 'edu', 'gov', 'mil')))
{
  $domain = substr(strrchr(substr($parse['host'], 0, -strlen($domain)), '.'), 1). '.'. $domain;
}
?>

答案 2 :(得分:0)

如果您的特定域名具有不同的TLD,例如mysite .co.uk.com,则基本上可以执行以下操作:

$url = 'http://mysite.co.uk/some-dir/';
$domain_pos = strpos($url, 'mysite');
$domain = substr($url, $domain_pos);
$ext_pos = strpos($domain, '/');
if($ext_pos !== false) { // extra check for paths/sub-dirs
  $domain = substr($domain, 0, $ext_pos); 
}
echo $domain;

返回mysite.co.uk或分配给$url的任何TLD。

请注意路径和子目录的额外检查。 :)