Помогите с парсингом

Тема в разделе "PHP", создана пользователем Jed7777, 24 фев 2010.

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

    Jed7777 Постоялец

    Регистр.:
    17 июл 2008
    Сообщения:
    136
    Симпатии:
    120
    Есть код:
    PHP:
    <?
    function 
    browser2($url) {
           
    $url 'http://depositfiles.com/ru/files/8wdqykds2';
           
    $user_cookie_file $_SERVER['DOCUMENT_ROOT'].'/depo/cookies.txt';
           
    $ch curl_init($url);
           
    curl_setopt($chCURLOPT_URL,$url);
           
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
           
    curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
           
    curl_setopt($chCURLOPT_COOKIEFILE$user_cookie_file);
           
    curl_setopt($chCURLOPT_COOKIEJAR,  $user_cookie_file);
           
    $html curl_exec($ch);
           
    curl_close($ch);
           
    $shab '(?<=\<a href\=\").*(?=\"\>ПО)';
           
    preg_match_all($shab,$html,$mat);
           echo 
    $mat;
           }
    echo 
    browser2($url);
    ?>
    В нем мне нужно сграбить информацию с сайта (работает нормально), потом с помощью регулярки (регулярка верна) вытащить определенную ссылку.
    На счет ссылки не получается, пишет:
    В чем проблема?
    У Вас запустить его не получится так как нет $user_cookie_file .
     
  2. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    он у тебя скобки воспринимает как ограничители регулярного выражения...
    PHP:
    $shab '#(?<=\<a href\=\").*(?=\"\>ПО)#';
    так будет правильно... или любые другие 2 одинаковых символа в начале и конце регулярки.
     
    ilya_averkiev нравится это.
  3. Nevep

    Nevep Постоялец

    Регистр.:
    16 дек 2009
    Сообщения:
    59
    Симпатии:
    8
    PHP:
    $shab '/(?<=\<a href\=\").*(?=\"\>ПО)/';
     
  4. Jed7777

    Jed7777 Постоялец

    Регистр.:
    17 июл 2008
    Сообщения:
    136
    Симпатии:
    120
    Теперь он выдает::(
     
  5. Nevep

    Nevep Постоялец

    Регистр.:
    16 дек 2009
    Сообщения:
    59
    Симпатии:
    8
    Поправил:
    PHP:
    for ($i=0;$i<preg_match_all($shab,$html,$mat);$i++){
          echo 
    $shab[1][$i];
          }
     
  6. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    и правильно))) а что он по твоему должен выдавать? =)
    preg_match_all тебе на выходе отдает массив...
    и вообще нафига 2 раза echo?
    в функции замени
    PHP:
    echo $mat;
    на
    PHP:
    return $mat
    а на печать выводи так:
    PHP:
    print_r(browser2($url));
    P.s.: Или как предложил Nevep циклом...
     
  7. Jed7777

    Jed7777 Постоялец

    Регистр.:
    17 июл 2008
    Сообщения:
    136
    Симпатии:
    120
    К сожалению, пустая строка... В чем же дело?
     
  8. Nevep

    Nevep Постоялец

    Регистр.:
    16 дек 2009
    Сообщения:
    59
    Симпатии:
    8
    ну я это для примера привёл, чтоб у Jed7777 вопросов невозникло как вывести следующее значение.

    Добавлено через 3 минуты
    Значит нету
    PHP:
    '#(?<=\<a href\=\").*(?=\"\>ПО)#'
    в $html
     
  9. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    А ты проверял цикл-то? Работает? =)

    У меня умирает со словами: Fatal error: Cannot use string offset as an array
     
  10. Nevep

    Nevep Постоялец

    Регистр.:
    16 дек 2009
    Сообщения:
    59
    Симпатии:
    8
    Проверял. Цикл работает.
     
Статус темы:
Закрыта.