Regex récursif pour du bbCode
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:
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:
1 2
| [block]
[block] [/block] |
et
Code:
1 2
| [block]
[/block] [/block] |
au lieu de parser les deux tag block correctement
Voici mon code php, merci de m'aider :)
Code:
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;
} |