регулярные выражения или регулярные выражения в PHP для замены {*} и {%}

Попытка создать веб-скрипт типа feed43.com.
Подробности:
У меня есть HTML-код следующим образом.

<div id="latest_header" onclick="getNews('79');">
<img src="home_images/arrow.gif">&nbsp;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">&nbsp;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('{%}'){*}&nbsp;{%}<br>{*}.gif">{%}..</label>

Результат должен соответствовать следующим правилам:

{*} — игнорируй все
{%} — используйте это как значение для переменной

то есть результатом должны быть все вхождения данного шаблона. В вышеуказанном случае:

{% 1} — 79 {% 2} — 2-дневный семинар {% 3} — национальный семинар

{% 1} — 78 {% 2} — МАСТЕРСКАЯ 2 ДНЯ {% 3} — МЕЖДУНАРОДНАЯ РАБОТА

Я не смог реализовать регулярные выражения и прочитать во многих местах, что невозможно перебрать html-страницы.
Я перешел на simple_html_dom, но мне не повезло, что все вышеперечисленное было сделано таким простым способом. По крайней мере, мне не удалось смоделировать вышесказанное.

Переменные {*} & {%} используются для создания шаблона, когда кто-то использует feed43.com для создания канала какого-либо веб-сайта.

0

Решение

Ваше регулярное выражение неверно. Используйте правильные квантификаторы, чтобы игнорировать предметы, и используйте для захвата совпадений подразделов:

/<div id="latest_header"(?>.*?getNews\(')(?>(.*?)'\))(?>.*?&nbsp;)(?>(.*?)<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.

0

Другие решения

Это, вероятно, может быть неуместно, но следующий проект с открытым исходным кодом достигает того, что я хотел ..

hFeeds

И все, что я на самом деле хотел, это иметь возможность создавать RSS-каналы для любой веб-страницы, такой как Feed43.com.
И hFeeds работает точно так же, как Feed43 .com, и прост в использовании.
Единственная разница в том, что вместо {*} используется {h} вместо {%} и {i}.
Он генерирует регулярное выражение, как я его вижу.

Но спасибо всем за ваши ответы

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector