С нами с 12.06.04
Сообщения: 122
|
Добавлено: 30/10/09 в 01:08 |
Помогите разобраться с регулярными выражениями на PHP. Есть html код:
Код: | <table>
<tr class=1><td class=2>раздел 1</td></tr>
<tr><td>текст 1 <a href>текст ссылки</a></td></tr>
<tr><td>текст 2 </td></tr>
<tr class=1><td class=2>раздел 2</td></tr>
<tr><td>текст 1 </td></tr>
<tr><td>текст 2 </td></tr>
</table> |
Задача - вырезать блоки:
Код: | <tr class=1><td class=2>раздел 1</td></tr>
<tr><td>текст 1 <a href>текст ссылки</a></td></tr>
<tr><td>текст 2 </td></tr> |
Код: | <tr class=1><td class=2>раздел 2</td></tr>
<tr><td>текст 1 </td></tr>
<tr><td>текст 2 </td></tr> |
Помоги составить правильно выражение.
|
|
|
|
С нами с 07.08.06
Сообщения: 190
Рейтинг: 165
|
Добавлено: 30/10/09 в 01:38 |
|
|
|
|
С нами с 13.08.08
Сообщения: 1538
Рейтинг: 1011
|
Добавлено: 09/11/09 в 22:31 |
Блоки по три ряда вырезать надо? Вот выражение:
Код: | #(?:<tr(?:\s+[^>]*)?>.*?</tr>){3}#is |
Не забудь модификатор s, иначе всякие там переносы строк за точку считать не будет.
|
|
|
|
С нами с 05.05.05
Сообщения: 1913
Рейтинг: 1134
|
Добавлено: 10/11/09 в 06:19 |
пример, сильно абстрактный, зацепиться не за что
в общем виде для данного случая:
Код: | $html = '<table>
<tr class=1><td class=2>раздел 1</td></tr>
<tr><td>текст 1 <a href>текст ссылки</a></td></tr>
<tr><td>текст 2 </td></tr>
<tr class=1><td class=2>раздел 2</td></tr>
<tr><td>текст 1 </td></tr>
<tr><td>текст 2 </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>'; |
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |