Нужна помощь при обработке данных с форума

Тема в разделе "PHP", создана пользователем Azter, 18 окт 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Azter

    Azter Постоялец

    Регистр.:
    11 дек 2006
    Сообщения:
    118
    Симпатии:
    122
    Приветствую!
    В общем нужно помощь)))
    Сам вопрос такой - есть скрипт который собирает ники юзерей с vbulletin форума, он это делает посредством открывания профиля /member.php?u=ид юзеря, и грабинга текста после"просмотр профиля:"
    Но в булке под каждым ником подписана группа. И вот я очень хочу модифицировать этот скрипт таким образом что-б можно было грабить по определеным групам. Т.е. пример:
    avstrija.com/forum/member.php?u=3798 - Группа "Новичок"
    avstrija.com/forum/member.php?u=6744 - Группа "пионер-герой"
    Хочеться что-б скрипт брал только ники тех юзерей которые имеют группу "пионер-герой"
    вот функция грабинга юзерей
    Код:
    $handle = fopen($list, "w");
    if ($all === 1) {$startpos = 1; $endpos = $count[1]; echo "<b>[i]switched to full mode</b><br>";}
    else {echo "<b>[i]grabbing from $startpos to $endpos</b><br>";}
    for ($u = $startpos; $u <= $endpos; $u++)
            {
            $sock = fsockopen($host, 80, $errno, $errstr, 10);
            if (!$sock) {$u = $u - 1; echo "socket error at $u - retrying"; continue;}
            stream_set_timeout($sock, 60);
            fputs($sock, "GET http://$path/member.php?u=$u HTTP/1.1\r\n");
            fputs($sock, "Host: $host\r\n");
            fputs($sock, "Connection: Close\r\n\r\n");
            while (!feof($sock))
            {
                    $line = fgets($sock);
                    $nick = preg_split("/просмотр профиля:\s|<\/title>/i", $line);
                    if ($nick[1]) {break;}
            }
            if ($nick[1] === "\r\n") {continue;}
            if (empty($nick[1])) {if ($all === 1){$u = $u -1;} continue;}
            if (!preg_match("/[а-я]+/i", $nick[1]))
            {
                    $str = $nick[1]."\r\n";
                    //$str = $nick[1]."\r\n";
                    fwrite($handle, $str);
                    echo "$u: $str<br>";
                    $i = $i + 1;
            }
            fclose($sock);
            }
    fclose($handle);
    
    Вот в этом участке
    Код:
       {
                    $line = fgets($sock);
                    $nick = preg_split("/просмотр профиля:\s|<\/title>/i", $line);
                    if ($nick[1]) {break;}
            }
            if ($nick[1] === "\r\n") {continue;}
            if (empty($nick[1])) {if ($all === 1){$u = $u -1;} continue;}
            if (!preg_match("/[а-я]+/i", $nick[1]))
    
    Нужно рыть, но увы я еще очень слабо понимаю пхп что-б сделать это самостоятельно (((
    Огромное спасибо!
     
  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    Код:
    preg_match_all ("/<div class=\"smallfont\">(.*?)<\/div>/", $line, $matches);
    if ($matches[1][0]=="пионер-герой")    {
    //тут уже делаеш все операции с записью и т.д.
    }
    
     
    Azter нравится это.
Статус темы:
Закрыта.