Разделите строку и получите разделитель в качестве возврата - PullRequest
0 голосов
/ 23 сентября 2010

Я хотел бы разбить строку на массив разделителей, а также получить отзыв о том, каким был разделитель.

Пример:
$mystring = 'test+string|and|hello+word';
$result = preg_split('/\+,|/+', $mystring);

Я хотел бы получить массив в виде возврата с что-то вроде этого :
$return[0] = array('test','+');
$return[1] = array('string','|');

Заранее

Ответы [ 2 ]

3 голосов
/ 23 сентября 2010

Посмотрите на параметр PREG_SPLIT_DELIM_CAPTURE для preg_split ()

EDIT

Пример:

$mystring = 'test+string|and|hello+word';
$result = preg_split('/([\+|,])/', $mystring, null, PREG_SPLIT_DELIM_CAPTURE);
0 голосов
/ 23 сентября 2010

Я не знал о PREG_SPLIT_DELIM_CAPTURE до того, как написал свой ответ.Это определенно понятнее, чем использование preg_match_all:

<?php
$s = 'a|b|c,d+e|f,g';
if (preg_match_all('/([^+,|]+)([+,|])*/', $s, $matches)) {
  for ($i = 0; $i < count($matches[0]); $i++) {
    echo("got '{$matches[1][$i]}' via delimiter '{$matches[2][$i]}'\n");
  }
}
...