Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Регулярные выражения PHP
цитата
30/10/09 в 01:08
 Mafia
Помогите разобраться с регулярными выражениями на PHP. Есть html код:
Код:
<table>
   <tr class=1><td class=2>раздел 1</td></tr>
   <tr><td>текст 1&nbsp;<a href>текст ссылки</a></td></tr>
   <tr><td>текст 2&nbsp;</td></tr>
   <tr class=1><td class=2>раздел 2</td></tr>
   <tr><td>текст 1&nbsp;</td></tr>
   <tr><td>текст 2&nbsp;</td></tr>
</table>

Задача - вырезать блоки:
Код:
   <tr class=1><td class=2>раздел 1</td></tr>
   <tr><td>текст 1&nbsp;<a href>текст ссылки</a></td></tr>
   <tr><td>текст 2&nbsp;</td></tr>

Код:
   <tr class=1><td class=2>раздел 2</td></tr>
   <tr><td>текст 1&nbsp;</td></tr>
   <tr><td>текст 2&nbsp;</td></tr>

Помоги составить правильно выражение.
цитата
30/10/09 в 01:38
 l0gic
Код:
<tr[^>]?(.*)<\/tr>
цитата
09/11/09 в 22:31
 remorhaz
Блоки по три ряда вырезать надо? Вот выражение:

Код:
#(?:<tr(?:\s+[^>]*)?>.*?</tr>){3}#is


Не забудь модификатор s, иначе всякие там переносы строк за точку считать не будет.
цитата
10/11/09 в 06:19
 freeek
пример, сильно абстрактный, зацепиться не за что
в общем виде для данного случая:

Код:
$html = '<table>
   <tr class=1><td class=2>раздел 1</td></tr>
   <tr><td>текст 1&nbsp;<a href>текст ссылки</a></td></tr>
   <tr><td>текст 2&nbsp;</td></tr>
   <tr class=1><td class=2>раздел 2</td></tr>
   <tr><td>текст 1&nbsp;</td></tr>
   <tr><td>текст 2&nbsp;</td></tr>
</table>';

  preg_match( '%((?:<tr.*(?=tr>)tr>[^<]*){3})[^<]*((?:<tr.*(?=tr>)tr>[^<]*){3})%isU', $html, $match );

  echo '<pre>';
  /**
  * в $match[1] и $match[2],
  * соответсвенно искомые части
  **/
  print_r( $match );
  echo '</pre>';


Эта страница в полной версии