广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP实现获取url地址中顶级域名的方法示例
  • 530
分享到

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

php服务器开发语言 2023-09-01 17:09:53 530人浏览 薄情痞子
摘要

做域名黑名单的时候我们需要得到顶级域名。下面总结几种PHP实现获取url地址中顶级域名的方法示例 ` 方法一:

做域名黑名单的时候我们需要得到顶级域名。下面总结几种PHP实现获取url地址中顶级域名的方法示例
`
方法一:

phpheader('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"), '
'
;echo getTopHost("http://www.abc.com/s/j?wd=djl"), '
'
;echo getTopHost("http://2.www.abc.com/s/j?wd=djl"), '
'
;echo getTopHost("https://mp.weixin.qq.com/s?__biz=MzA893ODI3ODU8lzMw=="), '
'
;echo getTopHost("http://codeit.org.cn/"), '
'
;echo getTopHost("https://www.sina.com.cn/?from=kandian"), '
'
;

运行结果

abc.comabc.comabc.coMQq.comcodeit.org.cnsina.com.cn

方法二,

function GetTopDomain(string $url = null){    // 判断网址是否带http://或https://     if (preg_match('/^http(s)?:\/\/.+/', $url)) {        $hosts = parse_url(strtolower($url));        $host = $hosts['host'];    } else {        $host = strtolower($url);    }    // 查看是几级域名    $data = explode('.', $host);    $n = count($data);    // 判断是否是双后缀    $preg = '/[w].+.(com|net|org|gov|edu).cn$/';    // 双后缀取后3位    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;}

方法三

//获取顶级域名function get_host(){        $url   = $_SERVER[HTTP_HOST];    $data = explode(., $url);    $co_ta = count($data);    //判断是否是双后缀    $zi_tow = true;    $host_cn = ‘com.cn,net.cn,org.cn,gov.cn’;    $host_cn = explode(,, $host_cn);    foreach($host_cn as $host){        if(strpos($url,$host)){            $zi_tow = false;        }    }    //如果是返回FALSE ,如果不是返回true    if($zi_tow == true){        $host = $data[$co_ta-2]...$data[$co_ta-1];    }else{        $host = $data[$co_ta-3]...$data[$co_ta-2]...$data[$co_ta-1];    }  return $host;}

方法四:根据二级域名甚至三级获取其顶级域名
需要识别的二级或三级域名:

$s =<<< TXTwww2.abc.com.cnwww3.abc.com.cnxx.xx.abc.com.cnwww2.abc.cnwww3.abc.cnxx.xx.abc.cnwww2.abc.uswww3.abc.usxx.xx.abc.usTXT;

2定义你允许识别的国家域名后缀:

$g = explode('|', 'af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za'); //允许的国家域名$j = array('com', 'net'); //允许的机构名

3PHP判断其顶级域名的代码

foreach($a as $r) {  echo "$r ==> ";  $n = 0;  $h = array_slice(explode('.', $r), 1); //去掉主机名  if(array_intersect($g, $h)) $n++;  if(array_intersect($j, $h)) $n++;  if($n) echo join('.', array_slice($h, -($n+1)));  echo PHP_EOL;}

4
完整代码示例:

$s =<<< TXTwww2.abc.com.cnwww3.abc.com.cnxx.xx.abc.com.cnwww2.abc.cnwww3.abc.cnxx.xx.abc.cnwww2.abc.uswww3.abc.usxx.xx.abc.usTXT;$a = preg_split("/[\r\n]+/", $s); //待识别域名$g = explode('|', 'af|aq|at|au|be|bg|br|ca|ch|cl|cn|de|eg|es|fi|fr|gr|hk|hu|ie|il|in|iq|ir|is|it|jp|kr|mx|nl|no|nz|pe|ph|pr|pt|ru|se|sg|th|tr|tw|uk|us|za'); //允许的国家域名$j = array('com', 'net'); //允许的机构名 foreach($a as $r) {  echo "$r ==> ";  $n = 0;  $h = array_slice(explode('.', $r), 1); //去掉主机名  if(array_intersect($g, $h)) $n++;  if(array_intersect($j, $h)) $n++;  if($n) echo join('.', array_slice($h, -($n+1)));  echo PHP_EOL;}

运行结果:

www2.abc.com.cn ==> abc.com.cnwww3.abc.com.cn ==> abc.com.cnxx.xx.abc.com.cn ==> abc.com.cnwww2.abc.cn ==> abc.cnwww3.abc.cn ==> abc.cnxx.xx.abc.cn ==> abc.cnwww2.abc.us ==> abc.uswww3.abc.us ==> abc.usxx.xx.abc.us ==> abc.us

来源地址:https://blog.csdn.net/qikexun/article/details/129899133

--结束END--

本文标题: PHP实现获取url地址中顶级域名的方法示例

本文链接: https://www.lsjlt.com/news/389033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作