如何用php获取url的顶级域名

在做网站的时候,有一些情况需要用到顶级域名,可以使用下面的代码获取到顶级域名,支持绝大多数的情况,包括国内的省份域名及一些国内特殊域名,下面的方法不能直接传 $_SERVER[‘HTTP_HOST’] 获取的域名,$_SERVER[‘HTTP_HOST’] 获取的是不包含协议头 http:// 或 https://,parse_url 函数解析不到 host

// 测试
echo getTopHost("http://ABC.com/s/j?wd=djl"),'<br>';
echo getTopHost("http://www.abc.com/s/j?wd=djl"),'<br>';
echo getTopHost("http://2.www.abc.com/s/j?wd=djl"),'<br>';
echo getTopHost("https://mp.weixin.qq.com/s?__biz=MzA3ODI3ODUzMw=="),'<br>';
echo getTopHost("http://abc.net.cn/"),'<br>';
echo getTopHost("http://www.cfi.NEt.cn/"),'<br>';
echo getTopHost("https://www.sina.com.cn/?from=kandian"),'<br>';
echo getTopHost("https://www.abc.gd.cn/?from=kandian"),'<br>';
echo getTopHost("https://www.abc.hb.cn/?from=kandian"),'<br>';
echo getTopHost("https://www.abc.edu.cn/?from=kandian"),'<br>';


function getTopHost($url=''){
  $url = strtolower($url); 
  $hosts = parse_url($url);
  $host = $hosts['host'];
  $data = explode('.', $host);
  $n = count($data);
  $preg = '/[\w].+\.(com|net|org|gov|edu|ac|ah|bj|cq|fj|gd|gs|gx|gz|ha|hb|he|hi|hk|hl|hn|jl|js|jx|ln|mo|nm|nx)\.cn$/';
  if(($n > 2) && preg_match($preg,$host)){
    $host = $data[$n-3].'.'.$data[$n-2].'.'.$data[$n-1];
  }else{
    $host = $data[$n-2].'.'.$data[$n-1];
  }
  return $host;
}

本文收集于网络,仅供技术交流使用,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容, 欢迎发送邮件至 admin@webse.cn 举报,一经查实,本站将立刻删除涉嫌侵权内容,本文链接:https://webse.cn/17328.html

(1)
打赏 微信扫一扫 微信扫一扫
上一篇 2020-09-30 19:21
下一篇 2020-10-08 09:55

发表回复

登录后才能评论