2012-01-18 8 views
3

私はユーザーがPHPで投稿を投稿できるテキストエリアを持っています。行の改行数を確認し、必要に応じて減らしたいとします。PHP行の改行数をマージし、必要に応じて減らしますか?

原文:私は最終的に何をしたい

Hello\n 
\n\n\n\n\n\n\n\n\n\n\n\n\n 
Goodbye 

Hello\n 
\n 
Goodbye 

だから基本的に私は、行で2つの改行の最大にしたいです。 これをPHPでどのように実現できますか?

ありがとうございました。

答えて

7

PCRE:

preg_replace('/\n{3,}/m', "\n\n", $text); 
+1

この場合、M修飾子は何をしますか?それは唯一のboudariesに使用されていますか? –

+0

あなたは正しいです。 'm'修飾子は必要ありません。 –

1

私はこれが2 \で3 \ nを交換しn個限りの可能性があるとします

$data = "Hello\n\n\n\n\n\n\n\n\n\n\n\n\nGoodbye"; 
while(($newdata = str_replace("\n\n\n", "\n\n", $data) != $data){ 
    $data = $newdata; 
} 

を置き換えるループにしてください。

入力を完璧にすることはできないため、\ rも\ nで置き換える必要があることに注意してください。これは、\ nの間の空白の可能性も考慮に入れません。

0

tanduの応答に追加するには、この変化は、同様のキャリッジ・リターンを占め:

preg_replace(array('/\r/m','/\n{3,}/m'), array("\n","\n\n"), $text); 

まず\r\nシーケンスは\n\nに還元されるように、S「の\nにS」の\rを変換します。その後、フィルタ\nが完了してジョブが終了します。

関連する問題