2

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

我有一个字符串如下:

a     quick brown      fox jumps    over a lazy dog

我希望结果是

a
quick brown      fox jumps     over a lazy dog

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

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

谢谢

4

3 回答 3

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

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

于 2012-05-10T20:26:48.270 回答
3

Use the optional fourth parameter, setting the limit of replacements made for the pattern:

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

Demonstration: http://codepad.org/Kocnyryj

于 2012-05-10T20:27:49.593 回答
2

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

于 2012-05-10T20:26:43.417 回答