2017-05-28 33 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

对不起,没有工作在子域的情况下 –