修改函数getdomain,将需要它没有子域在PHP


Modify function getdomain, would need it without subdomain in PHP

我需要帮助我的代码:我有一个函数,它只代替你。空格

例如

:如果我添加url: www.testek.com用户将看到 testk.com

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

因此,如果我们使用域名s.dada.testek.com,我希望最终用户只看到 testk.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);
}

我想的对吗?

因为现在终端用户看到这样:https://i.stack.imgur.com/JddKB.jpg

如果您只是想获得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个部分。

我已经这样修复了:

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

我已经创建了一个数组的"子域",我不想显示。现在它可以正常工作了。

apokryfos感谢你的支持,让我敞开心扉:)