Je ne suis pas sûr d'avoir bien compris ton dernier post. Je me lance quand même:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| $str = '[R]AAAA[/R]
[ss]eee[/ss]
[ss]fff[/ss]
[R]BBBB[/R]
[ss]ttt[/ss]
[ss]yyy[/ss]';
$i = 0;
preg_match_all('!\[R\](.+?)\[/R\].+?(?=\[R\]|$)!s', $str, $a);
foreach ($a[0] as $s) {
preg_match_all('|\[ss\](.+?)\[/ss\]|', $s, $m);
echo $a[1][$i];
print_r($m[1]);
++$i;
} |
Obligé de passer par 2 preg ayant essayé ça en vain:
'|\[R\](.+?)\[/R\](?:\s*\[ss\](.+?)\[/ss\])+|'
Comme le nombre de [ss] pour chaque [R] est variable, on ne peut pas capturer finement chaque sous occurrence de [ss] (seul le dernier d'une série est capturé). Ou alors si quelqu'un sait comment contourner ça, je suis preneur.
Partager