分割PHP URL字符串

5

如何仅返回域名的 TLD

例如,如果有以下域名:

www.domain.co.uk 我想仅返回 .co.uk

对于 domain.co.uk 也是同样的处理方式

对于所有其他的 TLDs (.com, .co, .org 等)是否有简单的方法在PHP中实现,而不使用 Regex

我考虑使用 explode 但我对此不太熟悉。


1
仅返回翻译后的文本,不做其他帮助。 - viral
parse_url会给你域名,然后在其上执行正则表达式,就可以得到期望的.com/.co.uk等。 - Mangesh Sathe
OP已经拥有域名。 - viral
4个回答

2

虽然这个答案(在后台)正在使用正则表达式,但提供的资源(publicsuffix.org)非常有帮助!+1 - ohaal

1

不是正则表达式,也不是parse_url()可以帮助你。

你需要使用Public Suffix List提取TLD的库,我建议使用TLDExtract


1
$returnHostName = parse_url($url, PHP_URL_HOST) //it will retrun 'domain' in your case
$returnArrayType = explode($returnHostName, $returnHostName); //explode it from string 'domain'

现在变量returnArrayType包含您想要的输出,但以数组形式呈现,您可以通过调用其索引来获取它。

检查它是否起作用。


0

这个函数适用于www和非www域名,不适用于子域名。为了获得更好的结果,您需要使用正则表达式或库。

    $domain = "www.domain.co.uk";
    function tld($domain)
    {
        if (strstr('www', $domain)) {
            $part = 3;
        } else {
            $part = 2;
        }
        $expld = explode('.', $domain);
        if (count($expld) > $part) {
            return $expld[count($expld) - 2] . '.' . $expld[count($expld) - 1];
        } else {
            return $expld[count($expld) - 1];
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接