Не вытягивает preg_match_all

Статус
В этой теме нельзя размещать новые ответы.

new_forward

Профессор
Регистрация
5 Май 2008
Сообщения
673
Реакции
44
Доброго времени суток!

Вытягиваю из XML ,блоки <offer>

XML:
Код:
$offers = <offer id="51" available="true">
<url>http://spartakman.ru/2/15/122/48/51/</url>
<price>150</price>
<currencyId>RUB</currencyId>
<categoryId>48</categoryId>
<picture>http://site.ru/img/product/large/51_29.jpg</picture>
<store>flase</store>
<pickup>true</pickup>
<delivery>true</delivery>
<name>Пепельница с логотипом</name>
<vendor>ФК "Спартак" Москва</vendor>
<description/>
</offer>
−
<offer id="53" available="true">
<url>http://spartakman.ru/2/15/37/296/53/</url>
<price>450</price>
<currencyId>RUB</currencyId>
<categoryId>296</categoryId>
<picture>http://site.ru/img/product/large/53_39.jpg</picture>
<store>flase</store>
<pickup>true</pickup>
<delivery>true</delivery>
<name>Визитница на 96 визиток</name>
<vendor>ФК "Спартак" Москва</vendor>
<description/>
</offer>

Вытягиваю так но ничего...

Код:
preg_match_all('#<offer id=".+?" available=".+?">(.+?)</offer>#i', $offers, $matches_offer);
$b_offer = $matches_offer[1];
print_r($b_offer);

Где ошибка помогите...
 

cat13

Постоялец
Регистрация
22 Мар 2009
Сообщения
84
Реакции
25
PHP:
'#<offer id=".+?" available=".+?">(.+?)</offer>#is'
 

zzallexx

Хранитель порядка
Регистрация
11 Июн 2008
Сообщения
1.053
Реакции
690
просто в таком случае надо использовать модификатор s а так все у тебя там правильно
 

-=Xardas=-

Гуру форума
Регистрация
17 Сен 2008
Сообщения
250
Реакции
58
не пойму, что за тупая мода пошла забивать гвозди микроскопом. Зачем использовать регулярки для парсинга XML если для этого есть специальные инструменты вроде SimpleXML?
 

KillDead

Хранитель порядка
Регистрация
11 Авг 2006
Сообщения
894
Реакции
579
не пойму, что за тупая мода пошла забивать гвозди микроскопом. Зачем использовать регулярки для парсинга XML если для этого есть специальные инструменты вроде SimpleXML?
Порой легче взять микроскоп и забить 1 гвоздь, чем взять огромный станок для забивания гвоздей для 1 гвоздя) эти специальные инструменты - довольно много потребляют памяти и совсем небыстрые, это относительно конечно, для малых объёмах разницы нет, но при больших - разница есть.
 

-=Xardas=-

Гуру форума
Регистрация
17 Сен 2008
Сообщения
250
Реакции
58
Порой легче взять микроскоп и забить 1 гвоздь, чем взять огромный станок для забивания гвоздей для 1 гвоздя) эти специальные инструменты - довольно много потребляют памяти и совсем небыстрые, это относительно конечно, для малых объёмах разницы нет, но при больших - разница есть.
какой еще "станок для забивания гвоздей"? :)
время "вытаскивания" блока offer:
0.00145997886657715 - regexp
0.00027608871459961 - simpleXML
потребление памяти:
326024 - регулярка
319104 - simpleXML
да и код намного проще:
PHP:
print_r(simplexml_load_string($offers));
+ в итоге мы получаем данные в виде структурированного объекта, и легко можем осуществить доступ к любому полю.
Все еще видите хоть 1 плюс у регулярок в данной ситуации? :)
 

trooll

PHP кодер
Регистрация
22 Дек 2008
Сообщения
482
Реакции
117
какой еще "станок для забивания гвоздей"? :)
время "вытаскивания" блока offer:
0.00145997886657715 - regexp
0.00027608871459961 - simpleXML
потребление памяти:
326024 - регулярка
319104 - simpleXML
да и код намного проще:
PHP:
print_r(simplexml_load_string($offers));
+ в итоге мы получаем данные в виде структурированного объекта, и легко можем осуществить доступ к любому полю.
Все еще видите хоть 1 плюс у регулярок в данной ситуации? :)

Согласен в этом вопросе с KillDead. Здесь вообще как бы кому какой инструмент по вкусу при забивание подобных гвоздей, я бы тоже воспользовался регуляркой, имхо preg_match_all() как то ближе к душе при подобных задачах, но это имхо...
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху