2015-05-29 85 views
5

我怎麼能只返回一個域名URL的分割PHP字符串

例如的TLD,如果我有以下幾點:

www.domain.co.uk我想回到剛纔的.co.uk

和同爲domain.co.uk

與同爲其他TLDs(.com, .co, .org etc)

是否有一個簡單的方法來做到這一點在PHP中不使用Regex

我想用explode的,但即時不太熟悉

+0

檢查php parse_url –

+1

它不會幫助。 @MangeshSatheIND – Viral

+0

parse_url會給你域名,然後對其進行正則表達式,你可以得到預期的.com/.co.uk等。 –

回答

2

您可以使用庫調用tldextract.php

在此查找https://github.com/data-ac-uk/equipment/blob/master/_misc/tldextract.php

用法很簡單:

$extract = new TLDExtract(); 
$components = $extract('http://forums.bbc.co.uk/'); 
echo $components['tld']; // co.uk 

現在多麼簡單的事?

如果您閱讀了代碼,可以看到它在fetchTldList()函數中使用了tlds的大list

+0

雖然這個答案(在後臺)正在利用正則表達式,提供的資源(publicsuffix.org)非常有幫助! +1 – ohaal

+0

謝謝@ohaal :) –

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]; 
     } 
    } 
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包含您所需的輸出,但在陣列的形式,你可以從調用它的指數得到它。

檢查它是否會工作。

1

不是正則表達式,不是parse_url()不會幫助你。

您需要使用Public Suffix List來提取TLD的庫,我推薦使用TLDExtract