2013-07-05 129 views
0

我想從url獲取域名擴展名。例如。 .COM,.NET等從URL獲取域名擴展名?

我已經使用這個:

$extension = pathinfo($_SERVER['SERVER_NAME'], PATHINFO_EXTENSION); 

我只是想知道是否有使用parse_url更好的辦法?

+0

更好地使用$ _SERVER ['HTTP_HOST'] – Evert

+2

你想如何處理'.co.uk'? – PeeHaa

回答

-3

您可以輕鬆地分割請求的URI是這樣的:

function tld($uri) { 
    $parts = explode('.', $uri); 

    return (sizeof($parts) ? ('.' . end($parts)) : false; 
} 

所以,你可以這樣做:

if(!tld('googlecom')) // does not contain an ending TLD 

if(tld('google.com')) // this is a valid domain name; output: ".com" 

或者,你可以使用:

echo $_SERVER['SERVER_NAME']; 

所以在我看來,你是最好的例子鼠尾草是:

echo tld($_SERVER['SERVER_NAME']); 
9

使用parse_url()。類似於:

$host = parse_url('http://www.google.co.uk/test.html'); 
preg_match('/(.*?)((\.co)?.[a-z]{2,4})$/i', $host['host'], $m); 

$ext = isset($m[2]) ? $m[2]: ''; 

編輯:用這個answer的正則表達式修復。像.co.uk這樣的擴展也被支持。

+0

這不適用於域名,如.co.uk – user1794021

+0

@ user1794021,請嘗試編輯後的版本。 – Nadh

+0

返回'未定義索引:主機' –