Не вытягивает 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);

Где ошибка помогите...
 
PHP:
'#<offer id=".+?" available=".+?">(.+?)</offer>#is'
 
просто в таком случае надо использовать модификатор s а так все у тебя там правильно
 
не пойму, что за тупая мода пошла забивать гвозди микроскопом. Зачем использовать регулярки для парсинга XML если для этого есть специальные инструменты вроде SimpleXML?
 
не пойму, что за тупая мода пошла забивать гвозди микроскопом. Зачем использовать регулярки для парсинга XML если для этого есть специальные инструменты вроде SimpleXML?
Порой легче взять микроскоп и забить 1 гвоздь, чем взять огромный станок для забивания гвоздей для 1 гвоздя) эти специальные инструменты - довольно много потребляют памяти и совсем небыстрые, это относительно конечно, для малых объёмах разницы нет, но при больших - разница есть.
 
Порой легче взять микроскоп и забить 1 гвоздь, чем взять огромный станок для забивания гвоздей для 1 гвоздя) эти специальные инструменты - довольно много потребляют памяти и совсем небыстрые, это относительно конечно, для малых объёмах разницы нет, но при больших - разница есть.
какой еще "станок для забивания гвоздей"? :)
время "вытаскивания" блока offer:
0.00145997886657715 - regexp
0.00027608871459961 - simpleXML
потребление памяти:
326024 - регулярка
319104 - simpleXML
да и код намного проще:
PHP:
print_r(simplexml_load_string($offers));
+ в итоге мы получаем данные в виде структурированного объекта, и легко можем осуществить доступ к любому полю.
Все еще видите хоть 1 плюс у регулярок в данной ситуации? :)
 
какой еще "станок для забивания гвоздей"? :)
время "вытаскивания" блока offer:
0.00145997886657715 - regexp
0.00027608871459961 - simpleXML
потребление памяти:
326024 - регулярка
319104 - simpleXML
да и код намного проще:
PHP:
print_r(simplexml_load_string($offers));
+ в итоге мы получаем данные в виде структурированного объекта, и легко можем осуществить доступ к любому полю.
Все еще видите хоть 1 плюс у регулярок в данной ситуации? :)

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