регулярные выражения - отдельная история

sbazz

Guest
регулярные выражения - отдельная история

Задача:

Достать из текста все блоки вида:
<!-- (заголовок блока) --> (текст) <!-- END -->

Условия:

в (текст)е могут быть любые символы. в том числе < и >.
таких блоков может быть несколько.

php 4.3.9
iis 5
windows xp pro

Попытки были:

<!-- (.*) -->(.*)<!-- END -->

работает на сайте regexlib.com/REtester.aspx
не работает в php.

<!-- ([^>]) -->(.*)<!-- END -->

аналогично.

также делал другими, более извращенными методами.. :)

Задача не решается и переходом на PCRE.
Вообще задача частично решена. (заголовок блока) я
получаю даже простейшими решениями. с текстом сложнее.
В PCRE удается получить и то и другое, но с условием различающихся закрывающих структур вида <!-- END -->.
Это не устраивает.

Для вопросов по поводу "для-чего-такое-надобно":
вырезать из текста dreamweaver'ские тэги шаблонов,
элементов библиотеки и прочих "комментарных" тэгов.

Да и вот. К предложениям перейти на строковые функции:
все бы хорошо, но насколько они быстро работают?..

З.Ы. Да ничего так пост по длине получился.. :)
 

vladax

Новичок
PHP:
$text = '<!-- Block_1 -->работает на сайте regexlib.com/REtester.aspx
не работает в php.<!-- END -->

<!-- Block_2 -->Ещё какой-нить бред :-)<!-- END -->';

preg_match_all('/<!-- (.+?) -->(.*?)<!-- END -->/si', $text, $matches);
[m]preg_match_all[/m]
http://detail.phpclub.ru/article/simple_regular
 

sbazz

Guest
СПАСИБО! Блин, трое суток почти безвылазно - и тут так всё просто.. СПАСИБО! С Новым годом! Выручили реально..
 

vladax

Новичок
Странно, но есть определенная закономерность: никто не хочет читать про жадность квантификаторов.

sbazz, ты не исключение. С Новым Годом.. С Новым Годом!
 

sbazz

Guest
vladax, знаешь, что самое странное - я про них читал.. и не раз.. я refer на php по pcre уже почти наизусть знаю.. почти.. :)
при этом не додумался.. RTFM мне и многим.. :) Исчо раз спасибо..
 
Сверху