Рекурсивный парсинг 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/
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
эти твои getPage и getRedirect авторизацию учитывают?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы