Помогите с шаблоном для парсинга

Тема в разделе "PHP", создана пользователем TIIIMOXAN, 19 июл 2010.

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

    TIIIMOXAN

    Регистр.:
    1 сен 2009
    Сообщения:
    403
    Симпатии:
    65
    Подскажите пожалуйста.Есть скрипт.
    <?php
    $pars = file_get_contents('http://mysite.ru');
    $shab = '<td>(.*)<\/td>';
    ereg ($shab,$pars, $mat);
    echo '<p>'.$mat[0].'</p>';
    ?>
    На сайте доноре,в шаблоне,между тегами (<td></td>),существуют 3 параграфа(<p>...</p> <p>...</p> <p>...</p>).
    Как составить шаблон,чтобы выводился только 3-ий параграф и не выводилась картинка.И если не затруднит,ткните носом,где можно почитать как составлять шаблон,чтобы можно было менять настройки парсинга.
    Заранее благодарен!
    Пример:
    <td>
    <p class="price">не нужно выводить: <span>не нужно выводить.</span> <br /> не нужно выводить: <span>не нужно выводить.</span>
    </p>
    <p>не нужно выводить<br />не нужно выводить</p>
    <p>А ЭТОТ ТЕКСТ НУЖНО ВЫВЕСТИ</p>
    </td>
     
  2. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Если в лоб решать, то как-то так:
    PHP:
    <?php $pars file_get_contents('http://www.example.com');
    preg_match('#<td>.*<p.*?<p.*?<p>(.*)<\/p>.*<\/td>#s'$pars$mat);
    echo 
    '<p>'.$mat[1].'</p>'?>
    Где почитать - легко находится поиском. Успехофф!
     
    TIIIMOXAN нравится это.
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    как вариант

    PHP:
    if (preg_match("/<td>(.+?)<\/td>/i"$text$result))
        if (
    preg_match_all ("/<p>([^<]+)/i"$result[1], $result1))
        for (
    $i=0$i<3$i++)
            
    $st $result1[1][$i];
    print 
    $st;
     
  4. TIIIMOXAN

    TIIIMOXAN

    Регистр.:
    1 сен 2009
    Сообщения:
    403
    Симпатии:
    65
    gres_18 спасибо,код подошел.Забыл сказать,что настранице таких таблиц много,20 и больше.а выводит только одну.Как решить это вопрос.

    diavolic,ваш скрипт пока не смотрел.
     
  5. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Вместо preg_match нужно использовать preg_match_all, на выходе будет двумерный массив со всеми результатами.
     
  6. TIIIMOXAN

    TIIIMOXAN

    Регистр.:
    1 сен 2009
    Сообщения:
    403
    Симпатии:
    65
    пишет Array
     
  7. gres_18

    gres_18 Pythonобандерівець®

    Регистр.:
    26 апр 2009
    Сообщения:
    407
    Симпатии:
    206
    Вот пример:
    PHP:
    <?php
    $pars 
    file_get_contents('http://www.example.com');
    preg_match_all('#<td>.*?<p.*?<p.*?<p>(.*?)<\/p>.*?<\/td>#s'$pars$mat);
    for (
    $i 0$i count($mat[0]); $i++) {
          echo 
    $mat[1][$i].'<br />'; }
    ?>
     
    TIIIMOXAN нравится это.
Статус темы:
Закрыта.