2

重複の可能性:
preg_replace を使用して最初の一致のみを置換

次のような文字列があります。

a     quick brown      fox jumps    over a lazy dog

そして、私は結果が欲しい

a
quick brown      fox jumps     over a lazy dog

複数の(複数の)空白の最初の出現のみを改行に置き換えたいが、その後の他の複数の空白はそのままにしておく。

どうすれば preg_replace でそれを行うことができますか?

ありがとう

4

3 に答える 3

3

オプションの 4 番目のパラメーターを使用して、パターンに対して行われる置換の制限を設定します。

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

デモンストレーション: http://codepad.org/Kocnyryj

于 2012-05-10T20:27:49.593 に答える
3
echo preg_replace('/\s{2,}/', "\n", $string, 1);

PHP ドキュメントから、4 番目の引数 topreg_replaceはオプションの制限であり、パターンを置換する回数を制限します。

于 2012-05-10T20:26:48.270 に答える
2

preg_replace()'sを使用$limitして、1 つのオカレンスのみを置き換えます。

$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 に答える