Php несколько разделителей в разрыве - PullRequest
125 голосов
/ 10 февраля 2011

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

$example = 'Appel @ Ratte';
$example2 = 'apple vs ratte'

, и мне нужен массив, который разбивается на @ или вместо

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

private function multiExplode($delimiters,$string) {
    $ary = explode($delimiters[0],$string);
    array_shift($delimiters);
    if($delimiters != NULL) {
        if(count($ary) <2)                      
            $ary = $this->multiExplode($delimiters, $string);
    }
    return  $ary;
}

Ответы [ 12 ]

1 голос
/ 10 февраля 2011

У вас будут некоторые проблемы (например, если у вас есть эта строка: «vs @ apple») при использовании этого метода разделения, но если мы начнем с того, что вы подумали об этом и исправили все эти возможные столкновения, вы можете просто заменить все вхождения от $delimiter[1] до $delimiter[n] на $delimiter[0], а затем разделить на это первое?

0 голосов
/ 30 декабря 2014

Это будет работать:

$stringToSplit = 'This is my String!' ."\n\r". 'Second Line';
$split = explode (
  ' ', implode (
    ' ', explode (
      "\n\r", $stringToSplit
    )
  )
);

Как видите, сначала он склеивает разорванные части \ n \ r вместе с пробелом, а затем снова разрезает его, на этот раз забирая пробелы с собой.

...