PHP实现获取url地址中顶级域名的方法示例

本文实例讲述了PHP实现获取url地址中顶级域名的方法。分享给大家供大家参考,具体如下:

parse_url()获取到的host时多级域名,如:mp.weixin.qq.com。做域名黑名单的时候我们需要得到顶级域名。

有不足之处还请留言指正,谢谢。

<?php

header('content-type:text/html;charset=utf-8');

//获取顶级域名

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)\.cn$/';

   if (($n > 2) && preg_match($preg, $host)) {

       //双后缀取后3位

      $host = $data[$n - 3] . '.' . $data[$n - 2] . '.' . $data[$n - 1];

    } else {

        //非双后缀取后两位

       $host = $data[$n - 2] . '.' . $data[$n - 1];

    }

    return $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://cfi.net.cn/"), '<br>';

echo getTopHost("https://www.xysoft.cc/php/php-curl-downfile.html/"), '<br>';

echo getTopHost("https://www.sina.com.cn/?from=kandian"), '<br>';

运行结果:

abc.com
abc.com
abc.com
qq.com
cfi.net.cn
xysoft.cc
sina.com.cn

发布了258 篇原创文章 · 获赞 43 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_35458793/article/details/102370235