[I need help] рекурсивные регулярки

killserver

Создатель
Регистрация
14 Фев 2012
Сообщения
24
Реакции
3
Нужна помощь, иль консультация(кому как нравится), как мне верно оформить регулярку для вложенности?
собственно: регулярка:
PHP:
#\\[codes (.*?)\\]([\s\S]*?)\\[/codes\\]#si
но если взять код вида
PHP:
[codes 15]test[codes 16]tests[/codes]testsss[/codes]
После обработки "забирается" код вида
HTML:
[codes 15]test[codes 16]testsss[/codes]
Как мне забирать полные кусок вида
HTML:
[codes 15]test[codes 16]test[/codes]testsss[/codes]
а потом уже внутреннюю часть
HTML:
[codes 16]test[/codes]
?
Прошу помощи...
 
используй функцию preg_match()

Для просмотра ссылки Войди или Зарегистрируйся

используй параметр

matches

В случае, если указан дополнительный параметр matches, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] - часть строки, соответствующую первой подмаске, и так далее.
 
используй функцию preg_match()

Для просмотра ссылки Войди или Зарегистрируйся

используй параметр

matches

В случае, если указан дополнительный параметр matches, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] - часть строки, соответствующую первой подмаске, и так далее.
как дальше с данными поступить - я знаю, дело в том, что оно регулярку не правильно "обрезает":(
 
Зациклите)
Код:
$text="[codes 15]test[codes 16]tests[/codes]testsss[/codes]";
while (preg_match('~\[codes\s\d+\]([^[]*)\[/codes\]~U',$text, $out)){
    echo '-'.$out[1].'-';
    $text=str_replace($out[0],'',$text);   
    }
 
Назад
Сверху