Я хочу разбить строку на несколько символов (будучи +
, ~
, >
и @
, но я хочу, чтобы эти символы были частью возвращаемых частей.
Я пытался:
$parts = preg_split('/\+|>|~|@/', $input, PREG_SPLIT_DELIM_CAPTURE);
В результате получаются только 2 части, где должно быть 5, а split-char не является частью части [1].
Я тоже пробовал:
$parts = preg_split('/\+|>|~|@/', $input, PREG_SPLIT_OFFSET_CAPTURE);
В результате получается, что 1 часть слишком мала (4 вместо 5), а последняя часть содержит символ разделения.
Без флагов в preg_split
результат почти идеален (столько частей, сколько должно быть), но все разделенные символы пропали.
Пример: * ** 1022 тысячу двадцать одна *
$input = 'oele>boele@4 + key:type:id + *~the end'; // spaces should be ignored
$output /* should be: */
array( 'oele', '>boele', ' @4 ', '+ key:type:id ', '+ *', '~the end' );
Есть ли функция spl или флаг, чтобы сделать это, или я должен сделать один сам = (