Доброй всем ночи! С регулярными выражениями знаком крайне поверхностно, но вот пришло время когда знание РВ очень понадобились. Дело в том что необходимо спарсить одну страничку на которой находится необходимая информация. Хотелось бы узнать реально ли в один 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 /> Заранее всем откликнувшимся большое спасибо
Зависит от задачи, иногда разумно разделить на несколько этапов, иногда это просто глупо. Код (Text): /<span>(.+?)<\/table>/si
информация о товаре разбросана по всему html вот и хотелось бы узнать возможны ли методы чтото типа такого нужная часть ненужная часть нужная часть объединить в одно выражение заменив ненужную часть чем либо
Возможны. Определитесь с задачей человеческим языком, и, в зависимости от закономерностей вашей речи, будем писать регулярное выражение на основе выделенных лексем. Если для разных HTML-файлов разные правила, которые звучат разными словами, то регулярное выражение соответствующее, если можете выделить закономерность позиции, расположения и логического разделения информации, то можно всё.
постараюсь. Есть несколько 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 несколько на странице. Надеюсь понятно сейчас объяснил
Вроде разобрался и проверил регулярное выражение с помощью сервисов интернете-все ок. Но в 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);