Разделите строку при сохранении разделителей и строки за пределами

Я пытаюсь сделать что-то, что должно быть очень просто, но я довольно новичок в PHP, и я борюсь с этим. Я хочу разбить строку, содержащую 0, 1 или более разделителей (фигурные скобки), сохраняя при этом разделители И строку между И и внешней строкой.

ex: 'Привет {F} {N}, как дела? будет выводить:

Array ( [0] => Hello [1] => {F} [2] => {N} [3] => , how are you? ) 

Вот мой код:

 $value = 'Hello {F}{N}, how are you?'; $array= preg_split('/[\{\}]/', $value,-1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); print_r($array); 

который выводит (отсутствующие фигурные скобки):

 Array ( [0] => Hello [1] => F [2] => N [3] => , how are you? ) 

Я также пробовал:

 preg_match_all('/\{[^}]+\}/', $myValue, $array); 

Какие выходы (фигурные скобки имеются, но текст снаружи размывается):

 Array ( [0] => {F} [1] => {N} ) 

Я уверен, что нахожусь на хорошем треке с preg_split, но с неправильным регулярным выражением. Кто-нибудь может мне с этим помочь? Или скажи мне, если я уйду?

Вы не захватываете разделителей. Добавьте их в группу захвата:

 /(\{.*?\})/ 

Вам нужно скобки вокруг части выражения, которое нужно записать:

 preg_split('/(\{[^}]+\})/', $myValue, -1, PREG_SPLIT_DELIM_CAPTURE); 

См. Документацию для preg_split() .