【问题标题】:Modify function getdomain, would need it without subdomain in PHP修改函数 getdomain,在 PHP 中不需要子域就需要它
【发布时间】:2016-09-07 10:30:04
【问题描述】:

我的代码需要帮助: 我有一个只替换你 www 的功能。有一个空格。

例如: 如果我添加网址:www.testek.com 用户将看到 testek.com

但如果我添加网址:s.dada.testek.com 用户将看到 s.dada.testek.com

因此,如果我们使用域 s.dada.testek.com,我希望最终用户只能看到 testek.com

但我想只获取主域而不获取任何子域。

代码:

function getdomain($url){ 
    $parsed = parse_url($url); 
    return str_replace('www.','', strtolower($parsed['host'])); 
}

我看到了一个帖子,但它对我不起作用。

感谢您的帮助!

现在我已将代码更改为:

function getdomain($url){ 
    $parsed = parse_url($url); 
    $bits = explode(".",$parsed["host"]);
    $mainDomain = array_filter($bits, function ($i) use ($bits) {
         return $i >= count($bits)-2;
    }, array(
    'www.rover.ebay.com' => 'ebay.com',
    's.click.aliexpress.com' => 'aliexpress.com', );

    return implode(".", $mainDomain);
}

我的想法正确吗?

因为现在最终用户看到的是这样的: http://i.stack.imgur.com/JddKB.jpg

【问题讨论】:

  • 那么什么才算主域?例如在www.google.com 中,答案显然是google.com,但是在假设的www.beta.google.com 中,它仍然是google.com 还是beta.google.com
  • 怎么说才算合格。就像你问的那样,它总是 google.com
  • 所以www.google.co.uk 会是co.uk?你需要一个更好的问题陈述。
  • 我不需要这些域名...因为我只会使用来自 ebay.com aliexpress.com 和 amazon.com 的域名。

标签: php dns subdomain


【解决方案1】:

如果您只是想获取 URL 主域名的最后 2 段,则可以执行以下操作:

function getdomain($url){ 
    $parsed = parse_url($url); 
    $bits = explode(".",$parsed["host"]);
    $mainDomain = array_filter($bits, function ($i) use ($bits) {
         return $i >= count($bits)-2;
    }, ARRAY_FILTER_USE_KEY );

    return implode(".", $mainDomain);
}

https://eval.in/636860 中查看它是如何工作的

不幸的是,大多数时候没有“包罗万象”的解决方案,您必须做很多硬编码的事情。例如英国有.co.uk,但法国只有.fr,因此您可能需要最后3 段甚至4 段。

【讨论】:

  • 是的,这就是我想使用它的方式。
  • 我应该在数组过滤键中添加什么?域名?
  • @Daichisan 我不确定我是否明白你在问什么
  • 查看我更新的问题中的代码。如果我实现该代码,我将一无所获……我还添加了一个屏幕,您可以从中看到我想要更改的内容。
  • 我不明白你为什么要这样更改代码。 getdomain 旨在接受单个 URL 并返回该 URL 的域。如果您有多个 URL,则需要分别为每个 URL 调用 getdomain
【解决方案2】:

我已经这样解决了:

function getdomain($url){ 
    $parsed = parse_url($url); 
    $replace = array ("rover.", "www.", "s.click.");
    return str_replace($replace,'', strtolower($parsed['host'])); 
}

我创建了一个包含我不想显示的“子域”的数组。 现在它工作正常。

apokryfos 感谢您的支持和打开我的思路 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    相关资源
    最近更新 更多