Объединить похожие URL в массиве - PullRequest
0 голосов
/ 28 сентября 2019

У меня есть массив с количеством просмотров URL из Google Analytics.Я хотел бы объединить отображение похожих адресов.

Например, у меня есть такой массив:

    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?

1 Ответ

0 голосов
/ 29 сентября 2019

Хорошо, я решил проблему:

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...