Попытка создать веб-скрипт типа feed43.com.
Подробности:
У меня есть HTML-код следующим образом.
<div id="latest_header" onclick="getNews('79');">
<img src="home_images/arrow.gif"> 2 DAY SEMINAR <br> <label id="news_pagedesp"><img src="home_images/li_desp.gif">NATIONAL SEMINAR..</label><label id="date_label">13th August 2014</label></div>
<div id="latest_header" onclick="getNews('78');">
<img src="home_images/arrow.gif"> 2 DAYS WORKSHOP <br> <label id="news_pagedesp"><img src="home_images/li_desp.gif">INTERNATIONAL WOR..</label><label id="date_label">8th August 2014</label></div>
Я пишу выражение, подобное следующему ..
<div id="latest_header"{*}getNews('{%}'){*} {%}<br>{*}.gif">{%}..</label>
Результат должен соответствовать следующим правилам:
{*} — игнорируй все
{%} — используйте это как значение для переменной
то есть результатом должны быть все вхождения данного шаблона. В вышеуказанном случае:
{% 1} — 79 {% 2} — 2-дневный семинар {% 3} — национальный семинар
{% 1} — 78 {% 2} — МАСТЕРСКАЯ 2 ДНЯ {% 3} — МЕЖДУНАРОДНАЯ РАБОТА
Я не смог реализовать регулярные выражения и прочитать во многих местах, что невозможно перебрать html-страницы.
Я перешел на simple_html_dom, но мне не повезло, что все вышеперечисленное было сделано таким простым способом. По крайней мере, мне не удалось смоделировать вышесказанное.
Переменные {*} & {%} используются для создания шаблона, когда кто-то использует feed43.com для создания канала какого-либо веб-сайта.
Ваше регулярное выражение неверно. Используйте правильные квантификаторы, чтобы игнорировать предметы, и используйте отлов-группа для захвата совпадений подразделов:
/<div id="latest_header"(?>.*?getNews\(')(?>(.*?)'\))(?>.*? )(?>(.*?)<br>)(?>.*?\.gif">)(.*?)<\/label>/s
* Атомные группы используются для устранения возвраты. Это регулярное выражение без них повлекло бы за собой много времени назад, что является одним из основных предостережения при разборе HTML с регулярным выражением.
Это будет ваш матч:
MATCH 1: [Group 1: 79] [Group 2: 2 DAY SEMINAR ] [Group 3: NATIONAL SEMINAR..]
MATCH 2: [Group 1: 78] [Group 2: 2 DAYS WORKSHOP ] [Group 3: INTERNATIONAL WOR..]
Вот regex demo.
Это, вероятно, может быть неуместно, но следующий проект с открытым исходным кодом достигает того, что я хотел ..
И все, что я на самом деле хотел, это иметь возможность создавать RSS-каналы для любой веб-страницы, такой как Feed43.com.
И hFeeds работает точно так же, как Feed43 .com, и прост в использовании.
Единственная разница в том, что вместо {*} используется {h} вместо {%} и {i}.
Он генерирует регулярное выражение, как я его вижу.
Но спасибо всем за ваши ответы