<?php
$text = "wiersz 1 - {IF 'alabama'=='ggg'}equal{ELSEIF 'alabama'=='hhh'}not 1{ELSEIF 'alabama'=='fff'}not 2{ELSE}not 3{ENDIF}";
preg_match('/({IF (.*?)}(.*?))({ELSEIF (.*?)}(.*?))*({ELSE}(.*?))?({ENDIF})/s',$text,$regs);
?>
Powyższy kod działa nie do końca tak, jakbym chciał. Zamiast wyłapać wszystkie powtórzenia "{ELSEIF ddd}ddd" łapie tylko ostatnie wystąpienie.
Innymi słowy, zamiast:
Array
(
[0] => {IF 'alabama'=='ggg'}equal{ELSEIF 'alabama'=='hhh'}not 1{ELSEIF 'alabama'=='fff'}not 2{ELSE}not 3{ENDIF}
[1] => {IF 'alabama'=='ggg'}equal
[2] => 'alabama'=='ggg'
[3] => equal
[4] => {ELSEIF 'alabama'=='fff'}not 2
[5] => 'alabama'=='fff'
[6] => not 2
[7] => {ELSE}not 3
[8] => not 3
[9] => {ENDIF}
)
oczekuję rezultatu:
Array
(
[0] => {IF 'alabama'=='ggg'}equal{ELSEIF 'alabama'=='hhh'}not 1{ELSEIF 'alabama'=='fff'}not 2{ELSE}not 3{ENDIF}
[1] => {IF 'alabama'=='ggg'}equal
[2] => 'alabama'=='ggg'
[3] => equal
[4] => {ELSEIF 'alabama'=='hhh'}not 1
[5] => 'alabama'=='hhh'
[6] => not 1
[7] => {ELSEIF 'alabama'=='fff'}not 2
[8] => 'alabama'=='fff'
[9] => not 2
[10] => {ELSE}not 3
[11] => not 3
[12] => {ENDIF}
)
Macie może pomysł jak to zmienić?
Z góry dzięki,
MS