$string = "Текст1 | {Вложенный1 | Вложенный2 } | Текст2";
preg_match_all('/\s?([^|\{\}]+|\s?\{.+\}\s?)\s?/', $string, $matches);
var_dump($matches[1]);
array(3) {
[0]=>
string(12) "Текст1 "
[1]=>
string(45) "{Вложенный1 | Вложенный2 } "
[2]=>
string(11) "Текст2"
}
(?<!(\{[0-9а-яА-Я ]+))\|
Raw Match Pattern:
(?<!(\{[0-9а-яА-Я ]+))\|
Match Array:
[0] = Текст1
[1] = {Вложенный1 | Вложенный2 }
[2] = Текст2