質問

単にメッセージを表示する単一の配信サイトをPHPで開発しています訪問者によって投稿されます(ウェブサイトのトピックを理想的に囲んでいます)。誰でも1時間に最大3つのメッセージを投稿できます。

ウェブサイトは1ページのみなので、各メッセージの縦の長さを制御したいと思います。ただし、元のメッセージの改行を少なくとも部分的に保存する必要があります。妥協案は、2つの改行を許可することですが、3つ以上ある場合は、合計2つの改行で連続して置き換えます。スタックオーバーフローはこれを実装します。

例:

<!> quot; Porcupines \ nare \ n \ n \ n \ n \ nporcupiney。<!> quot;

に変更されます

<!> quot;ヤマアラシ<!> lt; br / <!> gt; are <!> lt; br / <!> gt; <!> lt; br / <!> gt; porcupiney。<! > quot;

改行をチェックする際の注意すべき点の1つは、改行が収集されて\ r \ n、\ r、または\ nとして保存される可能性があることです。 nl2br()を使用して、すべての改行を<!> lt; br / <!> gt; sに変換することを考えましたが、それは不要に思えました。

私の質問:PHPで正規表現(preg_match()やpreg_replace()などの関数を使用)を使用して、連続する2つ以上の改行(それらの間の空白の有無にかかわらず)のインスタンスを確認する方法それらを合計2つの改行に変更しますか?

役に立ちましたか?

解決

preg_replace('/(?:(?:\r\n|\r|\n)\s*){2}/s', "\n\n", $text)

他のヒント

次のようなもの

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

動作するはずです。 PHPの構文は正確には覚えていませんが、さらにエスケープする必要があります:-/

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top