如何在php中只从给定的URL获取域名

时间:2017-05-19 11:36:35

标签: php

假设我已经提供了URL,我想只获得域名。 我如何在Php中实现这一目标。

     if(isset($project_detail_all[0]->d_name)) {
        $domain_name = $project_detail_all[0]->d_name ;
        $domain_name = explode('.', $domain_name);
        $count = count($domain_name);
        if (top_level_domains($domain_name[$count-1]) && 
            stristr($rss_url, $domain_name[$count-2])) {
            return  isValidXML($rss_url);
        } else {
            return  ['status'=>false , 'invalid_Domain'=>true];
        }
    } else {
        return  ['status'=>false , 'invalid_Domain'=>true];
    }

我应用了以下伎俩,但是当我有TLD时就失败了#34; co.uk"

sonar.sources

请帮助我

2 个答案:

答案 0 :(得分:2)

您要找的是parse_url()

<?php

    $url = parse_url("http://abc.news18.co.in");
    //echo $url['host'];
    echo 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', $url['host']); 

?>

答案 1 :(得分:1)

请使用正则表达式获取域名。

/.*?\.([A-z\d\.]+)(.co|.au)/s 

您可以看到我的解决方案结果here。绿色文本是正则表达式的结果。

使用以下代码。

$urls = ['www.google.com','www.mail.yahoo.com','www.mail.yahoo.co.in','www.abc.au.uk','www.subdoamin.domain.co.in','abc.news18.co.in/abc.php'];
$result = [];
foreach($urls as $url){
   preg_match('/.*?\.([A-z\d\.]+)(.co|.au)/s',$url,$match);
   $result[] = $match[1];
}
echo '<pre>';print_r($result);

你会得到任何你想要的结果。