【问题标题】:Get domain name from URL - PHP从 URL 获取域名 - PHP
【发布时间】:2015-12-26 22:26:19
【问题描述】:

我需要从 URL 获取域名

域名.com

domain.co.uk

我应该得到:

.com

.co.uk

我尝试使用爆炸功能,但不显示域“.co.uk”(示例)

    <?php
$url = "domain.com";

$host = explode('.', $url);

print $host[1];
?>

【问题讨论】:

  • 这里有内置的 php 函数 - 我会让你去找他们
  • 问题是你用两个点来爆炸一个域。它只会得到最后一个点之后的内容。
  • 我认为和preg_replace可以解决,但我对php了解不多。

标签: php


【解决方案1】:

是的,使用php函数parse_url(http://php.net/parse_url),它会帮助你。

【讨论】:

  • mrtest 会说西班牙语吗?
  • 短版,因此无论请求者的语言是什么,它都会显示:php.net/parse_url
  • 请不要只链接,而是在答案中引用链接的相关部分。
【解决方案2】:

更新基于(目前第三个答案) - Remove domain extension

$url = 'php.co.uk';
preg_match('/(.*?)((?:\.co)?.[a-z]{2,4})$/i', $url, $matches);

print_r($matches);


忽略跟随 - 不好的做法,但仍然解释了爆炸的工作。

查看您何时爆炸并使用“.”,它会在 .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。我只是想解释一下为什么(回答问题)您的代码正在执行/返回它是什么以及您将如何获得预期的结果。

【讨论】:

  • 糟糕的想法。使用内置函数不会爆炸
  • 我同意,但我想解释一下为什么他没有得到预期的结果。
  • @Dagon,您对此有何想法,我将不胜感激。
  • 看事情是,通常我会推荐。 pathinfo 或 parse_url,但根据那些.uk 是扩展名,.co 属于域名。
  • @mrtest 你试过 parse_url () 吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-10
  • 2013-04-08
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
相关资源
最近更新 更多