У меня есть строка, состоящая из нескольких предложений, которые находятся в фигурных скобках, которые я хочу удалить. Это было бы не так сложно (как я знаю сейчас), но настоящая проблема заключается в многоуровневости, и все, что я хочу разбить, это скобки верхнего уровня и оставить все в целости. Это выглядит примерно так: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];
Заранее благодарен! :)
Гарантируются ваши фигурные скобки должны быть сбалансированы? – ghoti
@ghoti Да, они гарантированно сбалансированы. – moskalak
@ Vulcan Я добавил информацию о том, что я пробовал в оригинальном посте. – moskalak