Я пытаюсь сделать что-то, что должно быть очень просто, но я довольно новичок в 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()
.