Как сохранить разделитель в следующем элементе в preg_split? - PullRequest
1 голос
/ 01 мая 2020

Я разбил строку на набор символов как

$str = 'a-1 90 b55 0 -4 4 c9';
$array = preg_split('#(?<=[abc])#',$str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);

, он сохраняет разделитель в предыдущем элементе как ( demo )

Array
(
    [0] => a
    [1] => -1 90 b
    [2] => 55 0 -4 4 c
    [3] => 9
)

, но Я хочу сохранить это в следующем пункте как

Array
(
    [0] => a-1 90
    [1] => b55 0 -4 4
    [2] => c9
)

1 Ответ

2 голосов
/ 01 мая 2020

Используйте lookahead вместо lookbehind:

$str = 'a-1 90 b55 0 -4 4 c9';
$array = preg_split('#(?=[abc])#',$str, -1, PREG_SPLIT_NO_EMPTY);
print_r($array);

Поскольку вы не используете в своем регулярном выражении какую-либо группу захвата, следовательно, нет необходимости использовать флаг PREG_SPLIT_DELIM_CAPTURE.

Код Демо

...