13

私は、訪問者によって投稿されたメッセージを表示するだけの PHP で単一のサービング サイトを開発しています (理想的には Web サイトのトピックを囲んでいます)。誰でも 1 時間に最大 3 件のメッセージを投稿できます。

Web サイトは 1 ページだけになるので、各メッセージの縦方向の長さを制御したいと考えています。ただし、元のメッセージの改行を少なくとも部分的に保持したいと考えています。妥協点は 2 つの改行を許可することですが、2 つを超える場合は、合計 2 つの改行に置き換えます。スタック オーバーフローはこれを実装します。

例えば:

Porcupines\nare\n\n\n\nporcupiney.

に変更されます

Porcupines<br />are<br /><br />porcupiney.

改行をチェックする際の注意が必要な側面の 1 つは、改行が収集され\r\n、 、\r、またはとして保存される可能性があること\nです。を使ってすべての改行を<br />sに変換することを考えましnl2br()たが、それは不要のようでした。

私の質問: PHP で正規表現を使用して (preg_match()およびのような関数を使用preg_replace())、2 つ以上の改行が連続して存在するインスタンスをチェックし (空白スペースの有無にかかわらず)、それらを合計 2 つの改行に変更するにはどうすればよいですか? ?

4

4 に答える 4

34
preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)
于 2009-05-03T02:05:58.217 に答える
6

何かのようなもの

preg_replace('/(\r|\n|\r\n){2,}/', '<br/><br/>', $text);

うまくいくはずだと思います。PHP構文を正確に覚えていませんが、もう少しエスケープする必要があるかもしれません:-/

于 2009-05-03T02:07:17.327 に答える