Ik probeer een IF/ELSEIF/ELSE statement te parsen.
Dit doe ik met de volgende Regular Expression:
Betekent dus dat er 0 of meer ELSEIF's kunnen voorkomen. Deze worden dan opgeslagen in \\3.
Het probleem is nu dat als er meerdere ELSEIF's zijn, alleen de laatste ELSEIF in \\3 wordt opgeslagen. Ik heb dit getest met een preg_replace( $regExp, $source, $match ); en vervolgens print_r( $match ). Op php.net staat daar het volgende over:
De manual bood voor zover ik gezien heb, hiervoor geen oplossing.
Wie wel?
Dit doe ik met de volgende Regular Expression:
code:
1
| /\\[IF ([-a-z0-9_]+)=\"[-a-z0-9\.\/_]+\"\](.+?)(\\[ELSEIF \\1=\"[-a-z0-9\.\/_]+\"\](.+?))*(\\[ELSE\](.+?))?\\[\/IF \\1\]/si |
code:
1
| (\\[ELSEIF \\1=\"[-a-z0-9\.\/_]+\"\](.+?))* |
Betekent dus dat er 0 of meer ELSEIF's kunnen voorkomen. Deze worden dan opgeslagen in \\3.
Het probleem is nu dat als er meerdere ELSEIF's zijn, alleen de laatste ELSEIF in \\3 wordt opgeslagen. Ik heb dit getest met een preg_replace( $regExp, $source, $match ); en vervolgens print_r( $match ). Op php.net staat daar het volgende over:
Maar het is voor mij natuurlijk belangrijk dat ik ze allemaal (apart) krijg.quote: http://PHP.netWhen a capturing subpattern is repeated, the value captured is the substring that matched the final iteration.
De manual bood voor zover ik gezien heb, hiervoor geen oplossing.
Wie wel?