codice:
<?

function recursiveSplit($string, $layer) {
	$err = preg_match_all("/\{(([^{}]*|(?R))*)\}/",$string,$matches);
	echo "Elementi trovati: $err
";
	if($err == FALSE) echo "preg_match_all ERROR
";

	// iterate thru matches and continue recursive split
	if (count($matches) > 1) {
		for ($i = 0; $i < count($matches[1]); $i++) {
			if (is_string($matches[1][$i])) {
				if (strlen($matches[1][$i]) > 0) {
					echo "<pre>Layer ".$layer.":   ".$matches[1][$i]."</pre>
";
					recursiveSplit($matches[1][$i], $layer + 1);
				}
			}
		}
	}
}

$buffer = "{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa}";
recursiveSplit($buffer, 0);
output
codice:
Elementi trovati: 
preg_match_all ERROR
Backtrack limit was exhausted!
questo codice mi da come errore PREG_BACKTRACK_LIMIT_ERROR... eppure il limite è settato a 100.000.000

sono molto scarso con le regex, è la prima volta che le uso e questo errore mi sta uccidendo!

grazie