<?php
$text = "[blue]My [black]house is [blue]very[/blue] beautiful[/black] today[/blue]";
$regex = '~(\[ ( (?>[^\[\]]+) | (?R) )* \])~x';
$replacements = array( "blue" => "<bleu>", "black" => "<noir>",
"/blue" => "</bleu>",
"/black" => "</noir>");
function($match) use ($replacements) {
return $replacements[$match[2]];
},
$text);
echo $text;
?>
PD9waHAKCiR0ZXh0ID0gIltibHVlXU15IFtibGFja11ob3VzZSBpcyBbYmx1ZV12ZXJ5Wy9ibHVlXSBiZWF1dGlmdWxbL2JsYWNrXSB0b2RheVsvYmx1ZV0iOwoKJHJlZ2V4ID0gJ34oXFsgKCAoPz5bXlxbXF1dKykgfCAoP1IpICkqIFxdKX54JzsKCgoKJHJlcGxhY2VtZW50cyA9IGFycmF5KAkiYmx1ZSIgPT4gIjxibGV1PiIsIAoJCQkJCQkiYmxhY2siID0+ICI8bm9pcj4iLCAKCQkJCQkJIi9ibHVlIiA9PiAiPC9ibGV1PiIsCgkJCQkJCSIvYmxhY2siID0+ICI8L25vaXI+Iik7CgokdGV4dCA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygkcmVnZXgsCglmdW5jdGlvbigkbWF0Y2gpIHVzZSAoJHJlcGxhY2VtZW50cykgewoJCXJldHVybiAkcmVwbGFjZW1lbnRzWyRtYXRjaFsyXV07Cgl9LAoJJHRleHQpOwoKZWNobyAkdGV4dDsKPz4=