2014-06-24 82 views
-2

獲取域名後綴(僅域)獲取域名後綴(僅域)(正則表達式PHP)

我需要在PHP或JavaScript正則表達式來解析域名。

任何後綴(COM,組織,淨,美,AR,....)和任何協議(HTTP,HTTPS,FTP,...)

例子:

array(
    , 'http://domainname.com' 
    , 'http://domainname.com/whatever/you/get/the/idea' 
    , 'http://www.domainname.com/whatever/you/get/the/idea' 
    , 'http://www.domainname.com' 
    , 'https://s1.s2.domainname.com/321.com/www.654.vom/' 
    , 'https://s1.domainname.com' 
    , 'https://s1.domainname.com/domain1.com/' 
    , 'https://domain1.com.domainname.com' 
    , 's1.s2.domainname.com/321.com/www.654.vom/' 
    , 's1.domainname.com' 
    , 's1.domainname.com/domain1.com/' 
    , 'domain1.com.domainname.com' 
); 

結果: 所有結果domainname.com

+0

可能重複[正則表達式查找域名加www](http://stackoverflow.com/問題/ 17427603 /正則表達式 - 查找域名 - 無www) – CyanAngel

+0

可能的重複[使用PHP修剪URL到域名通過刪除協議和路徑](http://stackoverflow.com/questions/2122292/use-php-to-trim-url-to-just-domain-by-removal-protocol-and-path) –

回答

0

一種無需正則表達式:

$urls = array('http://domainname.com', 
       'http://domainname.com/whatever/you/get/the/idea', 
       'http://www.domainname.com/whatever/you/get/the/idea', 
       'http://www.domainname.com', 
       'https://s1.s2.domainname.com/321.com/www.654.vom/', 
       'https://s1.domainname.com', 
       'https://s1.domainname.com/domain1.com/', 
       'https://domain1.com.domainname.com'); 

$domains = array_map(function ($url) { 
    $chunks = explode('.', parse_url($url,PHP_URL_HOST)); 
    $first_level_dn = array_pop($chunks); 
    return array_pop($chunks) . '.' . $first_level_dn; 
}, $urls); 

print_r($domains); 
+0

thankyou。我測試你的代碼。它的作品,但我需要正則表達式來獲取域名。 – user3770797

1

JS,運用現代URL API

u = 'https://s1.s2.domainname.com/321.com/www.654.vom/' 
    host = new URL(u).host.split('.').slice(-2).join('.') 

古色古香的正則表達式的方式

host = u.match(/^\w+:\/\/.*?(\w+\.\w+)(\/|$)/)[1] 
+0

請完整驗證碼。我不使用你的代碼。 – user3770797