如何更换每一秒的空白区域?

kel*_*ter 3 php pcre

我想用" ," 替换每一秒的空格preg_replace.并输入如下字符串:

$string = 'a b c d e f g h i';
Run Code Online (Sandbox Code Playgroud)

应该导致这样的输出:

a b,c d,e f,g h,i
Run Code Online (Sandbox Code Playgroud)

谢谢

Gum*_*mbo 6

您可以使用的组合explode,array_chunk,array_mapimplode:

$words = explode(' ', $string);
$chunks = array_chunk($words, 2);
$chunks = array_map(function($arr) { return implode(' ', $arr); }, $chunks);
$str = implode(',', $chunks);
Run Code Online (Sandbox Code Playgroud)

但它假设每个单词由一个空格分隔.

另一个可能更简单的解决方案是这样使用preg_replace:

preg_replace('/(\S+\s+\S+)\s/', '$1,', $string)
Run Code Online (Sandbox Code Playgroud)

该模式(\S+\s+\S+)\s匹配一个或多个非空白字符(\S+)的任何序列,后跟一个或多个空白字符(\s+),后跟一个或多个非空白字符,后跟一个空白字符,并用逗号替换最后一个空格.领先的空白将被忽略.

所以匹配将在这种情况下:

a b c d e f g h i
\__/\__/\__/\__/
Run Code Online (Sandbox Code Playgroud)

然后将它们替换如下:

a b,c d,e f,g h,i
Run Code Online (Sandbox Code Playgroud)