仅用新行替换多个空格的第一个出现

时间:2012-05-10 20:24:56

标签: php regex preg-replace

  

可能重复:
  Replace only first match using preg_replace

我有一个字符串如下:

a     quick brown      fox jumps    over a lazy dog

我希望结果是

a
quick brown      fox jumps     over a lazy dog

想要用换行符替换第一次出现的多个(多于1个)空格,但在此之后保留其他多个空格。

我怎么能用preg_replace做到这一点?

由于

3 个答案:

答案 0 :(得分:3)

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

PHP documentation开始,preg_replace的第四个参数是一个可选限制,限制了替换模式的次数。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

使用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(无限制)。