Помогите с регулярным выражением

V
На сайте с 10.01.2012
Offline
85
439

Уважаемые guru, подскажите как составить регулярку для preg_match() дабы выбрать со страницы содержимое всех блоком вида:

<div class="items" id="произвольный_идентификатор" >

содержимое_блока
</div>
...
<div class="items" id="произвольный_идентификатор" >
содержимое_блока
</div>
Polkan
На сайте с 28.09.2005
Offline
102
#1

preg_match_all ('|<div class=["\']items["\'] id=["\'](.+?)["\'].*?>(.*?)</div>|is', $str, $out, PREG_SET_ORDER );

сформирует массивы с содержимым блоков и соответствующими id блоков

WordPress-плагин для Apishops (http://p-api-shop.ru/) P-API-Shop WooCommerce-плагин для Apishops (http://woo-apishops.ru/) Woo-Apishops
V
На сайте с 10.01.2012
Offline
85
#2

Спасибо.

Сформировался массив с содержимым блоков, с ID и самими DIVами. А как сделать чтобы сформировался массив только с содержимым этих дивов? Промучался читая мануалы по регуляркам и экспериментируя, но так ничего и не получилось.

тоисть. получился массив вида

array (size=50)

0 =>
array (size=3)
0 => string '<div class="items" id="произвольный_идентификатор" >
содержимое_блока
</div>' (length=2921)
1 => string 'произвольный_идентификатор' (length=18)
2 => string '
содержимое_блока
' (length=2847)
1 => ...
Polkan
На сайте с 28.09.2005
Offline
102
#3

Varenik, удалите флаг PREG_SET_ORDER, один из массивов будет с содержимым блоков.

Ну и в регулярке можно лишнее удалить.

V
На сайте с 10.01.2012
Offline
85
#4

выражение

preg_match_all ('|<div class=["\']items["\'] id=["\'].*?["\']>(.*?)</div>|is', $text, $out );

выводит одномерный массив вида

array (size=50) 
0 =>
array (size=3)
0 => string '<div class="items" id="произвольный_идентификатор" >
содержимое_блока
</div>' (length=2921)
1 => ...

а нужно

array (size=50) 
0 =>
array (size=3)
0 => string '
содержимое_блока
' (length=2847)
1 => ...

вот не получается никак

A
На сайте с 19.07.2010
Offline
130
#5
Varenik:
вот не получается никак

Нужный Вам результат находится в $out[1], т.е.


preg_match_all ('|<div class=["\']items["\'] id=["\'].*?["\']>(.*?)</div>|is', $text, $out );
print_r($out[1]);
.............

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий