【问题标题】:Merge similar URLs in array合并数组中的相似 URL
【发布时间】:2020-01-28 15:27:52
【问题描述】:

我有一个数组,其中包含来自 Google Analytics 的 URL 浏览次数。我想合并显示相似地址。

比如我有这样一个数组:

    array(
        array(
            '/news/259670-lorem-ipsum/',
            '20715'
        ),
        array(
            'example.com/news/259670-lorem-ipsum/',
            '451' 
        ),
        array(
            'example.com/news/259670-lorem-ipsum/?amp_lite=',
            '5' 
        ),
        array(
            '/news/259670-lorem-ipsum/amp/',
            '54' 
        ),
        array(
            '/reviews/259671-dolor-amp-sit-amet/',
            '10732'
        ),
        array(
            'example.com/reviews/259671-dolor-amp-sit-amet/?fbclid=1234567890',
            '41' 
        ),
        array(
            '/reviews/259671-dolor-amp-sit-amet/amp/?fbclid=1234567890',
            '2' 
        ),
    );

最终的结果应该是这样的:

array(
    '/news/259670-lorem-ipsum/' => 21225,
    '/reviews/259671-dolor-amp-sit-amet/' => 10775
)

我怎样才能用 PHP 做到这一点?

【问题讨论】:

    标签: php arrays regex merge array-merge


    【解决方案1】:

    好的,我解决了这个问题:

    $res = array();
    
    foreach($pages as $page){
        // Remove domain
        $url = preg_replace('/\/?(example\.com)/i', '$2', $page[0]);
    
        // Remove query string
        $url = preg_replace('/(\/[^?]+).*/i', '$1', $url);
    
        // Remove AMP
        $url = preg_replace('/\/amp\/\z|\/amp$/i', '/', $url);
    
        if(array_key_exists($url, $res)){
            $res[$url] += $page[1];
        } else{
            $res[$url] = $page[1];
        }
    
    }
    
    var_dump($res);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多