Php 如何从url获取Domain.ext?菲律宾语

Php 如何从url获取Domain.ext?菲律宾语,php,apache,apache2,Php,Apache,Apache2,如果我们有 $url = "http://subdomain.domin.ext/somepath/file.php"; 如何获取domain.ext 当我使用 $parse = parse_url($url); $domin = $parse[host]; 然后 echo“$domain”//这将返回subdomain.domin.ext 有没有办法获取domain.ext $url = "http://subdomain.domin.ext/somepath/file.php";

如果我们有

 $url = "http://subdomain.domin.ext/somepath/file.php";
如何获取domain.ext

当我使用

 $parse = parse_url($url);
 $domin = $parse[host];
然后
echo“$domain”//这将返回subdomain.domin.ext

有没有办法获取domain.ext

$url = "http://subdomain.domin.ext/somepath/file.php";
$parse = parse_url($url);
$domain = $parse['host'];
$lastDot = strrpos($domain,'.');
$ext = substr($domain,$lastDot+1);
这将使您获得“ext”(例如“com”或“gov”)。在类似amazon.co.uk的情况下,它会给你“uk”。如果需要“co.uk”,则需要添加逻辑来检测某些TLD(例如“uk”),并转到这些情况下的第二个点

<?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;
}
?>
这将使您获得“ext”(例如“com”或“gov”)。在类似amazon.co.uk的情况下,它会给你“uk”。如果需要“co.uk”,则需要添加逻辑来检测某些TLD(例如“uk”),并在这些情况下转到第二个点。


<?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;
}
?>

如果您有一个具有不同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


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

如果您有一个具有不同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


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

如何定义“domain.ext”?“TLD和第一个子域?”关于
foo.bar.co.uk
域,你只想要“co.uk”吗?域不是“基于扩展的”,它们是从右到左的层次结构。我认为你可以从第一个句号开始,一直到斜杠前面的字符为止。@Kevin人们可以有他们喜欢的任意多的子域。a、 b.c.d.e.f.g.co.uk您确实需要一个查找表来处理二级域-“mod.uk”是您所说的扩展名,但“mod.us”是一个合法的域名。还要注意,根可能存在于URL中:
http://example.com./path
如何定义“domain.ext”?“TLD和第一个子域?”关于
foo.bar.co.uk
域,你只想要“co.uk”吗?域不是“基于扩展的”,它们是从右到左的层次结构。我认为你可以从第一个句号开始,一直到斜杠前面的字符为止。@Kevin人们可以有他们喜欢的任意多的子域。a、 b.c.d.e.f.g.co.uk您确实需要一个查找表来处理二级域-“mod.uk”是您所说的扩展名,但“mod.us”是一个合法的域名。还要注意,根可能存在于URL中:
http://example.com./path
这可能仅适用于顶级域.net和.com。。但是,如果你有像www.google.co.uk这样的url,它会给出co.uk。。感谢您的回答听起来您需要一个查找表,正如Long Ears建议的那样。您也可以使用substr(strrchr($domain,'.')),1)。这可能只适用于顶级域.net和.com。。但是,如果你有像www.google.co.uk这样的url,它会给出co.uk。。感谢您的回答听起来您需要一个查找表,正如Long Ears建议的那样。您还可以使用substr(strrchr($domain,“.”),1)。