You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP实现域名与子域名点击量统计:如何提取有效子域名?

PHP域名点击量统计解决方案

核心问题解决:提取有效子域名

对于类似mobile.sports.yahoo.com的域名,通过拆分域名片段+倒序拼接就能生成所有符合要求的有效子域名:

  1. 用explode('.', $domain)将域名拆分为层级片段数组,比如mobile.sports.yahoo.com会拆成['mobile', 'sports', 'yahoo', 'com']
  2. 从最后一个片段开始逐步向前拼接,每次拼接结果都是一个有效子域名:
    • 第一步:com
    • 第二步:yahoo.com
    • 第三步:sports.yahoo.com
    • 第四步:mobile.sports.yahoo.com

完整实现函数

function calculateClicksByDomain($counts) {
    $totalClicks = [];
    
    foreach ($counts as $item) {
        // 拆分点击次数与域名
        list($clickCount, $domain) = explode(',', $item);
        $clickCount = (int)$clickCount;
        
        // 将域名拆分为层级片段
        $domainParts = explode('.', $domain);
        $partCount = count($domainParts);
        
        $currentDomain = '';
        // 倒序遍历片段,拼接所有有效子域名
        for ($i = $partCount - 1; $i >= 0; $i--) {
            $currentDomain = $currentDomain === '' 
                ? $domainParts[$i] 
                : $domainParts[$i] . '.' . $currentDomain;
            
            // 累加对应域名的点击量
            $totalClicks[$currentDomain] = isset($totalClicks[$currentDomain]) 
                ? $totalClicks[$currentDomain] + $clickCount 
                : $clickCount;
        }
    }
    
    return $totalClicks;
}

// 测试调用示例
$counts = [ 
     "900,google.com",
     "60,mail.yahoo.com",
     "10,mobile.sports.yahoo.com",
     "40,sports.yahoo.com",
     "300,yahoo.com",
     "10,stackoverflow.com",
     "20,overflow.com",
     "5,com.com",
     "2,en.wikipedia.org",
     "1,m.wikipedia.org",
     "1,mobile.sports",
     "1,google.co.uk"
];

print_r(calculateClicksByDomain($counts));

函数说明

  • 遍历输入数组的每条记录,拆分出点击次数和目标域名
  • 通过倒序拼接域名片段,生成所有从右到左的有效层级域名
  • 用关联数组存储每个域名的总点击量,重复域名自动累加次数

运行代码后会得到所有域名及子域名的总点击量,比如com的总点击量为1350,yahoo.com的总点击量为410等。

内容的提问来源于stack exchange,提问作者Hassan Farooq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 18:20:26