PHP, регулярное выражение и многоуровневые фигурные скобки

У меня есть строка, состоящая из нескольких предложений, заключенных в фигурные скобки, которые мне нужны. удалять. Это было бы не так сложно сделать (как я знаю сейчас), но настоящая проблема в том, что он многоуровневый, и все, что я хочу, это убрать скобки верхнего уровня и оставить все внутри нетронутым. Это выглядит примерно так:

{Super duper {extra} text.} {Which I'm really {starting to} hate!} {But I {won't give up} so {easy}!} {Especially when someone is {gonna help me}.}

Я хочу создать массив, который будет состоять из этих четырех элементов:

Super duper {extra} text.
Which I'm really {starting to} hate!
But I {won't give up} so {easy}!
Especially when someone is {gonna help me}.

Я испробовал два способа, один из которых — preg_split, но он не принес много пользы:

$key = preg_split('/([!?.]{1,3}\} \{)/',$key, -1, PREG_SPLIT_DELIM_CAPTURE);
$sentences = array();

for ($i=0, $n=count($key)-1; $i<$n; $i+=2) {
$sentences[] = $key[$i].$key[$i+1]."<br><br>";
}

Другой — с использованием preg_match_all, который был довольно хорош, пока я не понял, что эти скобки у меня многоуровневые:

$matches = array();
$key = preg_match_all('/\{[^}]+\}/', $key, $matches);
$key = $matches[0];

Заранее спасибо! :)

5
задан moskalak 13 June 2012 в 23:00
поделиться