2017-05-28 37 views
0

我想從任何種類的頂級域的URL中提取域名。 TLD可以在任何字符數目或我的是兩個大小來自URL中的域名Php

<?php $domain_name = 'http://www.subdomain.domain.co.in' ; 
     $ParsedURL = parse_url($domain_name); 
     $domain_name = preg_replace("/^([a-zA-Z0-9].*\.)?([a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z.]{2,})$/", '$2', $ParsedURL['host']); 
     $domain_name = current(explode('.', $domain_name)); 
     print_r($domain_name); 

所以上述解決方案僅滿足有限的網址,它的時候TDL的是字符如org.in三個或更多的失敗, 我再次得到不同當網址中沒有子域時的結果。 請幫助我,因爲我只想從給定的URL「域」

+0

不要認爲有一個簡單的方法來做到這一點,沒有一些常數。例如,域名是否總是有http:// www呢?是否總是會有一個子域名?有沒有會有一個HTTPS?這是一個有趣的問題,但我不認爲會有一個簡單的解決方案。 – Joe

+0

用$ 2替換域名的確切目標是什麼? – G4Hu

回答

0

試試這個正則表達式/^\.{1}.*\.[a-zA-Z0-9]{2,3}(\.[a-zA-Z0-9]{2,3})?$/唯一的事情就是去掉第一個'。'從匹配的字符串:<?php substr($domain_name, 1);?>

+0

謝謝,它在所有頂級域名中工作正常,但在url中存在子域名時失敗 –

+0

小編輯可能工作 – G4Hu

+0

對不起,沒有工作在子域的情況下 –