<?php
$input = '{a{b{c{d}}}}';
preg_match_all('/(?:^(?=({\w+(?1)?})$)|\G(?!\A)){(\w+)/', $input, $matches);
PD9waHAKIAokaW5wdXQgPSAne2F7Yntje2R9fX19JzsKcHJlZ19tYXRjaF9hbGwoJy8oPzpeKD89KHtcdysoPzEpP30pJCl8XEcoPyFcQSkpeyhcdyspLycsICRpbnB1dCwgJG1hdGNoZXMpOwpwcmludF9yKCRtYXRjaGVzWzJdKTs=