从URL获取域名-PHP

从URL获取域名-PHP,php,Php,我需要从URL获取域名 domain.com domain.co.uk 我应该得到: 网站 .co.uk 我尝试使用explode函数,但没有显示domain“.co.uk”(示例) 是的,使用php函数解析url(),它将帮助您。基于更新(目前是第三个答案)- 打印(匹配项) 忽略以下不良做法,但仍然解释了爆炸的工作原理 查看当您爆炸并使用“.”时,它会在.co.uk中两次找到它。 因此,如果您在哪里同时回显$host[1]和$host[2],您将分别得到co-uk 因此,作为一个部分完整

我需要从URL获取域名

domain.com

domain.co.uk

我应该得到:

网站

.co.uk

我尝试使用explode函数,但没有显示domain“.co.uk”(示例)


是的,使用php函数
解析url
(),它将帮助您。

基于更新(目前是第三个答案)-

打印(匹配项)


忽略以下不良做法,但仍然解释了爆炸的工作原理

查看当您爆炸并使用“.”时,它会在.co.uk中两次找到它。 因此,如果您在哪里同时回显$host[1]和$host[2],您将分别得到co-uk

因此,作为一个部分完整的(不确定你的最终游戏是什么)解决方案:

解决方案:

$url = "domain.co.uk";

$host = explode('.', $url);
$first = true;
foreach($host as $hostExtension){
  if($first){
      $first = !$first;
      continue;
  }
 else{
      echo $hostExtension .'<br>';
  }
}
$url=“domain.co.uk”;
$host=explode('.',$url);
$first=true;
foreach($HostAs$hostExtension的主机){
如果($第一){
$first=!$first;
继续;
}
否则{
回显$hostExtension。“
”; } }

不过,为了清楚起见,其他答案解释了应该如何解析URL。我只是想解释一下为什么(回答这个问题)你的代码会这样做/返回它是什么,以及你将如何得到你想要的结果。

有内置的php函数来实现这一点-我让你去发现它们。问题是你正在用两个点展开一个域。它只会得到最后一个点之后的内容。我认为用preg_replace可以解决问题,但我不知道多少php.mrtest会说西班牙语?简短版本,因此它会显示请求者的语言:请不要只是链接,而是在答案中引用链接的相关部分。糟糕的想法。使用内置函数我不同意,但我想解释一下为什么他没有得到预期的结果。@Dagon,你对此有什么想法,我将不胜感激。看,事情是这样的,通常我会推荐的。pathinfo或parse_url,但根据它们,.uk是扩展名,.co属于域名。@mrtest您尝试过parse_url()吗?
$url = 'php.co.uk';
preg_match('/(.*?)((?:\.co)?.[a-z]{2,4})$/i', $url, $matches);
$url = "domain.co.uk";

$host = explode('.', $url);
$first = true;
foreach($host as $hostExtension){
  if($first){
      $first = !$first;
      continue;
  }
 else{
      echo $hostExtension .'<br>';
  }
}