Регулярное выражение

Renny

Новичок
Регулярное выражение

есть текст:
<name="http" sample="http://services.ru>
<item code="2298" />
</name>

надо выдернуть из текста кусок вида :
="http" sample="http://services.ru>
<item code="2298" />
</



Есть регулярка:
preg_match_all("/(?<=\<name)(.*)(?=name\>)/", $html, $matches);

не выдергивает что я хочу, подскажите, пожалуйста, где у меня ошибка.
Я хотел выдернуть все символы из текста, включая переводы строки и тд, между словами <name name> .
 

Renny

Новичок
Я просто не весь текст привел, вот если он такого вида:
<name="xy">
<name="http" sample="http://services.ru>
<item code="2298" />
<item code="2298" />
<item code="2298" />
<item code="2298" />
</name>
<name="http" sample="http://seewrwrices.ru>
<item code="rwer" />
<item code="wewr8" />
<item code="2erewr8" />
<item code="22rer8" />
</name>
</name="xy">
И мне надо получить уже 2 массива, то substr не поможет:)
 

Demiurg

Guest
давай ты сразу будешь полностью описывать задачу ?
 

Renny

Новичок
Originally posted by Demiurg
давай ты сразу будешь полностью описывать задачу ?
Уговорил :) вот:
<name="xy">
<name="http" sample="http://services.ru>
<item code="2298" />
<item code="2298" />
<item code="2298" />
<item code="2298" />
</name>
...около 1000 блоков подобных ...
<name="http" sample="http://seewrwrices.ru>
<item code="rwer" />
<item code="wewr8" />
<item code="2erewr8" />
<item code="22rer8" />
</name>
</name="xy">
 

Renny

Новичок
Гмм, так это надо XML изучать, а мне быстро надо сделать, понимаю, что лучше полчаса учиться летать, но сегодня некогда:)
 

Renny

Новичок
нет не задача, просто я попутно делаю две вещи:
1 разбираю XML файл.
2 изучаю RegExp.
 

Renny

Новичок
Узнать как написать регулярное выражение, которое выдавало бы содержимое файла вместе с переносами строк и др спец символами, находящееся между тегом начала и тегом конца.
 

Demiurg

Guest
Регулярные выражения ничего не выдают. Мой телепатический модуль подсказывает мне, что тебе надо почитать про жадность в РВ.
 

Renny

Новичок
preg_match_all("/(?<=\<)(.+?)(?=\> )/", $html, $matches);

вот такая регулярка выдаст мне все строки


а такая:
preg_match_all("/(?<=\<)(.*)(?=\> )/", $html, $matches);

ничего не выдает, почему?
 

Renny

Новичок
(.*)
это ведь означает любой символ, в любом количестве?
 

Demiurg

Guest
это означает любое количество любых символов, кроме переводов строк, в твоем случае.
 
Сверху