假设我已经提供了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
请帮助我
答案 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);
你会得到任何你想要的结果。