2014-03-12 26 views
2

我知道有parse_url,然后得到['host'],但是它会返回完整的www.example.com。我想是这样的:如何从PHP中的URL解析网站的名称?

https://stackoverflow.com/questions/ask变成计算器

https://console.aws.amazon.com/s3/home?region=us-west-2变成亚马逊

https://www.google.com/变成谷歌

有关如何做到这一点的任何建议?

+1

我想不出任何会*可靠*做到这一点。如果你获得主机名,你可以检索你提到的例子,用'.'分解它,然后得到最后一个元素。 – Jorg

+0

@Jorg,这不适用于国家域名:www.google.co.uk。倒数第二个就是'.co' – Andy

+0

@Andy这就是Jorg说的,它不能可靠地工作。 –

回答

0

还在用parse_url(),但在此之后,使用爆炸(),并获得第二到的最后一个索引

// Explode by . 
$arr_host = explode('.', $host); 
// Count how many in array 
$count = count($arr_host); 
// Get second to the last index 
$domain = $arr_host[$count-2]; 

echo $domain; 
+1

'http:// www.samsung.co.kr/main.do'变成...? –

+0

$ parse = parse_url($ url); $ host = isset($ parse ['host'])? $ parse ['host']:''; –

0

尝试

$pieces = parse_url($url); 
$domain = isset($pieces['host']) ? $pieces['host'] : ''; 
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) { 
    echo strstr($regs['domain'], '.', true); 
} 
+0

与顶级域名可供购买,这将在它们的整个主机上失败:https://gtldresult.icann.org/application-result/applicationstatus/viewstatus – Jorg

+0

@Jorg在您提供的这个URL示例中,isn 't * gtldresult *子域名? – Javad

+0

是的,但我发布的链接实际上是让你遵循:)它具有当前所有正在进行的ICANN顶级域名的申请,其中大部分是中文,或者在其中有重音字符, [a-z0-9]' – Jorg