Zerium
Zerium

Reputation: 17333

How to split an array by every nth appearance of a string?

This question is different to Split, a string, at every nth position, with PHP, in that I want to split a string like the following:

foo|foo|foo|foo|foo|foo

Into this (every 2nd |):

array (3) {
  0 => 'foo|foo',
  1 => 'foo|foo',
  2 => 'foo|foo'
}

So, basically, I want a function similar to explode() (I really doubt that what I'm asking will be built-in), but which 'explodes' at every nth appearance of a certain string.

How is this possible?

Upvotes: 0

Views: 242

Answers (1)

Baba
Baba

Reputation: 95131

You can use explode + array_chunk + array_map + implode

$string = "foo|foo|foo|foo|foo|foo";
$array = stringSplit($string,"|",2);
var_dump($array);

Output

array
  0 => string 'foo|foo' (length=7)
  1 => string 'foo|foo' (length=7)
  2 => string 'foo|foo' (length=7)

Function used

function stringSplit($string, $search, $chunck) {
    return array_map(function($var)use($search){return implode($search, $var); },array_chunk(explode($search, $string),$chunck));
}

Upvotes: 2

Related Questions