За последние 24 часа нас посетили 19347 программистов и 1615 роботов. Сейчас ищут 867 программистов ...

Подскажите люди знающие!

Тема в разделе "Регулярные выражения", создана пользователем impy, 8 дек 2009.

  1. impy

    impy Активный пользователь

    С нами с:
    8 дек 2009
    Сообщения:
    4
    Симпатии:
    0
    Доброй всем ночи! С регулярными выражениями знаком крайне поверхностно, но вот пришло время когда знание РВ очень понадобились. Дело в том что необходимо спарсить одну страничку на которой находится необходимая информация. Хотелось бы узнать реально ли в один preg_match_all впихнуть все выражение или корректнее делать в несколько этапов? И второй вопрос: на странице есть некий кусок

    <span class="art">bla bla bla/span>
    <br><br />bla
    <br />bla
    <br />bla
    <br/>bla
    <br>bla <br> <table width="20" border="0" cellspacing="0" cellpadding="10">

    как получить кусок кода который начинается после span и заканчивается перед table если учесть что <br> может встретится в html и раньше и как поступать со слешем в случае <br />
    Заранее всем откликнувшимся большое спасибо
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Зависит от задачи, иногда разумно разделить на несколько этапов, иногда это просто глупо.

    Код (Text):
    1. /<span>(.+?)<\/table>/si
     
  3. impy

    impy Активный пользователь

    С нами с:
    8 дек 2009
    Сообщения:
    4
    Симпатии:
    0
    информация о товаре разбросана по всему html вот и хотелось бы узнать возможны ли методы чтото типа такого

    нужная часть
    ненужная часть
    нужная часть
    объединить в одно выражение заменив ненужную часть чем либо
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Возможны.
    Определитесь с задачей человеческим языком, и, в зависимости от закономерностей вашей речи, будем писать регулярное выражение на основе выделенных лексем.
    Если для разных HTML-файлов разные правила, которые звучат разными словами, то регулярное выражение соответствующее, если можете выделить закономерность позиции, расположения и логического разделения информации, то можно всё.
     
  5. impy

    impy Активный пользователь

    С нами с:
    8 дек 2009
    Сообщения:
    4
    Симпатии:
    0
    постараюсь. Есть несколько div-вов вида

    <div style="margin-right: 22px;">
    <div class="t">Заголовок</div>
    <span class="a">Арт</span>
    <br><br />
    Текст
    <br />Текст
    <br>Текст <br>
    <table width="240" border="0" cellspacing="0" cellpadding="10">
    <tr><td><span class="price">22 руб.</span></td></tr></table>
    </div>

    необходимо что находится внутри дива разделить по частям с помощью регулярного выражения: Заголовок, арт,текст,цена. И таких Div несколько на странице. Надеюсь понятно сейчас объяснил :)
     
  6. impy

    impy Активный пользователь

    С нами с:
    8 дек 2009
    Сообщения:
    4
    Симпатии:
    0
    Вроде разобрался и проверил регулярное выражение с помощью сервисов интернете-все ок. Но в php неработает :( где ошибка...

    preg_match_all("/<div class=\"t\">(.+)<\/div><span class=\"a\">арт: ([^ ]+) <\/span><br><br \/>(.+)<br><table.+<span class=\"price\">([^<]+) руб./si", $ret1[3] , $info, PREG_PATTERN_ORDER);