Вы можете использовать комбинацию explode
, array_chunk
, array_map
и implode
:
$words = explode(' ', $string);
$chunks = array_chunk($words, 2);
$chunks = array_map(function($arr) { return implode(' ', $arr); }, $chunks);
$str = implode(',', $chunks);
Но предполагается, что каждое слово отделено одним пробелом.
Другое и, вероятно, более простое решение использует preg_replace
, например:
preg_replace('/(\S+\s+\S+)\s/', '$1,', $string)
Шаблон (\S+\s+\S+)\s
соответствует любой последовательности из одного или нескольких непробельных символов (\S+
), за которыми следуют один или несколько пробельных символов (\s+
), за которыми следует один или несколько непробельных символов,сопровождается одним пробельным символом и заменяет последний пробел запятой.Ведущие пробелы будут игнорироваться.
Таким образом, совпадения будут в этом случае:
a b c d e f g h i
\__/\__/\__/\__/
Затем они заменяются следующим образом:
a b,c d,e f,g h,i