我怎麼能只返回一個域名URL的分割PHP字符串
例如的TLD
,如果我有以下幾點:
www.domain.co.uk
我想回到剛纔的.co.uk
和同爲domain.co.uk
與同爲其他TLDs
(.com, .co, .org etc)
是否有一個簡單的方法來做到這一點在PHP中不使用Regex
我想用explode
的,但即時不太熟悉
我怎麼能只返回一個域名URL的分割PHP字符串
例如的TLD
,如果我有以下幾點:
www.domain.co.uk
我想回到剛纔的.co.uk
和同爲domain.co.uk
與同爲其他TLDs
(.com, .co, .org etc)
是否有一個簡單的方法來做到這一點在PHP中不使用Regex
我想用explode
的,但即時不太熟悉
您可以使用庫調用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。
雖然這個答案(在後臺)正在利用正則表達式,提供的資源(publicsuffix.org)非常有幫助! +1 – ohaal
謝謝@ohaal :) –
此功能適用於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];
}
}
$returnHostName = parse_url($url, PHP_URL_HOST) //it will retrun 'domain' in your case
$returnArrayType = explode($returnHostName, $returnHostName); //explode it from string 'domain'
現在沒事了可變returnArrayType包含您所需的輸出,但在陣列的形式,你可以從調用它的指數得到它。
檢查它是否會工作。
不是正則表達式,不是parse_url()不會幫助你。
您需要使用Public Suffix List來提取TLD的庫,我推薦使用TLDExtract。
檢查php parse_url –
它不會幫助。 @MangeshSatheIND – Viral
parse_url會給你域名,然後對其進行正則表達式,你可以得到預期的.com/.co.uk等。 –