Porównanie dwóch arrays z URL

0

Hej,
mam mały kłopot z porównaniem dwóch tablic z URL i sprawdzeniem które z URLi się powtarzają a które są podobne. Mam na przykład takie dwie tablice:

$urls = ['https://test.com/', 'http://example.com/', 'https://google.com/'];
$urlsFromOtherSource = ['https://test.com/', 'https://example.com/', 'https://facebook.com/'];

Muszę z tego zrobić trzy tablice. Pierwsza z nich będzie z URLami, które znajdują się w jednej i drugiej z tablic a dwie pozostałe tablicę zostają bez zmian z tym, że jeśli w jednej i drugiej jest taki sam URL różniący się jedynie http-https to taki URL muszę przypisać tylko do jednej tablicy. Nie wiem czy jest to dosyć jasne dlatego pokażę przykładowy wynik:


$commonUrls = ['https://test.com/']; //dlatego że ten URL jest zarówno w pierwszej jak i w drugiej tablicy

 $urls = ['http://example.com/', 'https://google.com/'];   //'http://example.com/ Ten adres zostawiam w pierwszej tablicy i usuwam z drugiej dlatego, że tam znajduje się ten sam URL a różni się jedynie https


  $urlsFromOtherSource = ['https://facebook.com/']; //usuwam https://example.com/ dlatego, że jest on w pierwszej tablicy a różni się jedynie http

Nie mam pomysłu jak to zrobić najprościej. Mój wstępny kod wygląda tak:

$urls = ['https://test.com/', 'http://example.com/', 'https://google.com/'];

        $urlsFromOtherSource = ['https://test.com/', 'https://example.com/', 'https://google.com/'];

        $commonUrls = array_intersect($urls, $mozUrls);//here I have common urls from both arrays
        $urls = array_diff($urls, $commonUrls);//I remove from this array urls which i have in common array
        $urlsFromOtherSource = array_diff($mozUrls, $commonUrls);//I remove from this array urls which i have in common array


        foreach ($urlsFromOtherSource as $url) {
            $landingPageArray[] = preg_replace(["#^http(s)?://#", "#^www\.#"], ["", ""], $url);
        }

        foreach ($urls as $url) {
            $landingPage = preg_replace(["#^http(s)?://#", "#^www\.#"], ["", ""], $url);
            if (in_array($landingPage, $landingPageArray)) {
                $httpDifference[] = $url;
            }
        }
        //tutaj mógłbym niby zrobić jeszcze jakaś pętlę i sprawdzić ale nic nie przychodzi mi do głowy bo w $httpDifference mam te URLe, które różnią się tylko http ale nie wiem jak je teraz usunąć z arraya urlsFromOtherSource bo one mają różną postać http-https nie chcę przekombinować
        $urlsFromOtherSource = array_diff($urlsFromOtherSource, $httpDifference);

Może ktoś będzie miał lepszy pomysł na zrobienie takiego porównania tablic z URLami to proszę pisać. Wystarczy jakaś myśl która pomoże mi dokończyć to porównywanie. Z góry dziękuję :)

0

Używasz już kilku funkcji do operacji na tablicach - myślę, że tę część problemu, którą obecnie próbujesz zrobić ręcznie, możesz obsłużyć funkcją array_uintersect(). Działa ona tak samo, jak array_intersect(), z tym że możesz podać tam własną funkcję do porównywania. I w niej możesz zaprogramować, że dwa URL-e różniące się wyłącznie użyciem SSL-a, to dla Ciebie to samo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1