Моя исходная строка:
{categories group_id="3"}
{category_name}
{/categories}
{categories group_id="4"}
{category_name}
{/categories}
Мое регулярное выражение таково:
preg_match('/{categories group_id="3"}(.*){\/categories}/s', $tagdata, $matches);
Что приводит к:
Array
(
[0] => Array
(
[0] => {categories group_id="3"}
{category_name}
{/categories}
{categories group_id="4"}
{category_name}
{/categories}
)
[1] => Array
(
[0] =>
{category_name}
{/categories}
{categories group_id="4"}
{category_name}
)
)
Вы можете видеть, что жадность слишком жадная, и она продолжается вплоть до конца второго экземпляра. То, что я ожидаю, это:
Array
(
[0] => Array
(
[0] => {categories group_id="3"}
{category_name}
{/categories}
)
[1] => Array
(
[0] =>
{category_name}
)
)