仅将第一次出现的多个空格替换为换行符


Replace only the first occurence of multiple whitespace with new line

可能的重复项:
仅使用preg_replace替换第一个匹配项

我有一个字符串如下:

a     quick brown      fox jumps    over a lazy dog

我希望结果是

a
quick brown      fox jumps     over a lazy dog

只想用换行符替换第一次出现的多个(超过 1 个)空格,但保留此后的其他多个空格不变。

我怎样才能用preg_replace做到这一点?

谢谢

echo preg_replace('/'s{2,}/', "'n", $string, 1);

在 PHP 文档中,preg_replace的第四个参数是可选限制,限制应替换模式的次数。

使用可选的第四个参数,设置为模式进行的替换限制:

$str = preg_replace( "/'s{2,}/", PHP_EOL, $str, 1 );

演示:http://codepad.org/Kocnyryj

使用 preg_replace()$limit只替换一个匹配项。

$string = preg_replace("/'s's+/", "'n", $string, 1); // 's's+ to replace 2 or more
// Where  preg_replace($pattern, $replacement, $subject, $limit);

$limit 每个主题字符串中每个模式的最大可能替换数。默认值为 -1(无限制)。