php 获取顶级域名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
     * 获取顶级域名
     * @param $url
     * @return string
     */
    public static function getDoMain($url){
        if(empty($url)){
            return '';
        }
        if(strpos($url,'http://') !== false){
            $url = str_replace('http://','',$url);
        }
        if(strpos($url,'https://') !== false){
            $url = str_replace('https://','',$url);
        }
        $n = 0;
        for($i = 1;$i <= 3;$i++) {
            $n = strpos($url, '/', $n);
            $i != 3 && $n++;
        }
 
        $nn = strpos($url, '?');
        $mix_num =  min($n,$nn);
        if($mix_num > 0 || !empty($mix_num)){
            //防止链接带有点 (.) 导致出错
            $url = mb_substr($url,0,$mix_num);
        }
        $data = explode('.', $url);
 
        $co_ta = count($data);
        //判断是否是双后缀
        $no_tow = true;
        $host_cn = 'com.cn,net.cn,org.cn,gov.cn';
        $host_cn = explode(',', $host_cn);
        foreach($host_cn as $val){
            if(strpos($url,$val)){
                $no_tow = false;
            }
        }
        //截取域名后的目录
        $del = strpos($data[$co_ta-1], '/');
        if($del > 0 || !empty($del)){
            $data[$co_ta-1] = mb_substr($data[$co_ta-1],0,$del);
        }
        //如果是返回FALSE ,如果不是返回true
        if($no_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;
    }

  

posted @   一个人的孤独自白  阅读(869)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
历史上的今天:
2016-05-19 查找mysql数据库中所有包含特定名字的字段所在的表
点击右上角即可分享
微信分享提示