Рекурсивная функция PHP(Рекурсивный парсинг)

есть задача пропарсить все сообщения от пользователя на форуме xenforo. Дело в том,что как я понял - без рекурсии не обойтись. При переходе на пятую страницу сообщений пользователя возможно два исхода. 1 - парсер закончит свою работу и вернет результат. 2 - он регуляркой узнает то,что есть еще более старые сообщения и запустит еще раз самого себя. Что-то я написал,но ничего у меня не работает,или работает тяжко.

function getAll($id)
{
    $resultarray = array();
    $url = getRedirect('https://forum.arizona-rp.com/search/member?user_id='.$id);
    preg_match_all('/https:\/\/forum.arizona-rp.com\/search\/(\d+)\//',$url,$searchid);
    $searchid = $searchid[1][0];

    $resultarray = recursiveparse('https://forum.arizona-rp.com/search/'.$searchid.'/?page=',$resultarray,$searchid);

    return $resultarray;
}


function recursiveparse($url,$resultarray,$searchid)
{
    for ($i=1; $i <= 5; $i++) { 
        $page = getPage($url . $i);
        $ik = $i + 1;
        if (strpos($page,'<a href="/search/'.$searchid.'/?page='.$ik.'">'))
        {
            preg_match_all('/<a href="\/profile-posts\/(\d+)\/">.*<\/a>/',$page,$foo);
            preg_match_all('/<a href="\/profile-posts\/comments\/(\d+)\/">.*<\/a>/',$page,$fok);
            preg_match_all('/<a href="\/threads\/\d+\/post-(\d+)">/',$page,$threads);
            $resultarray = array_merge($resultarray,$foo[1],$fok[1],$threads[1]);
        } else {
            if(preg_match_all('/https:\/\/forum.arizona-rp.com\/search\/\d+\/older\?before=\d+/',$page))
            {
                preg_match_all('/https:\/\/forum.arizona-rp.com\/search\/\d+\/older\?before=\d+/',$page,$pageurl);
                $resultarray = recursiveparse($pageurl[0][0],$resultarray);
            } else {
                preg_match_all('/<a href="\/profile-posts\/(\d+)\/">.*<\/a>/',$page,$foo);
                preg_match_all('/<a href="\/profile-posts\/comments\/(\d+)\/">.*<\/a>/',$page,$fok);
                preg_match_all('/<a href="\/threads\/\d+\/post-(\d+)">/',$page,$threads);
                $resultarray = array_merge($resultarray,$foo[1],$fok[1],$threads[1]);
                break;
            }
        }

    }
    return $resultarray;
    
}

С рекурсией столкнулся впервые,прошу помощи. Сам список сообщений - https://forum.arizona-rp.com/search/3456826/


Ответы (0 шт):