Bonjour à tous

j'ai un code qui permet de parser via regex du bbcode dans un texte. Il marche nickel, le soucis c'est que je n'arrive pas à le rendre récursif en profondeur.

Je m'explique avec un exemple:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
[block] 
[block] [/block]
[/block]
Dans ce cas, mon code va trouver 2 blocs mais ne les parse pas correctement et m'affiche ça:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[block] 
[block] [/block]
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
[block] 
[/block] [/block]
au lieu de parser les deux tag block correctement

Voici mon code php, merci de m'aider

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
function bb_parse($string) {
        while (preg_match_all('`\[(.+?)=?(.*?)\](.+?)\[/\1\]`si', $string, $matches)) foreach ($matches[0] as $key => $match) {
 
            list($tag, $param, $innertext) = array($matches[1][$key], $matches[2][$key], $matches[3][$key]);
            switch ($tag) {
 
            // traitement
 
            }
            $string = str_replace($match, $replacement, $string);
        }
        return $string;
}