私はユーザーがPHPで投稿を投稿できるテキストエリアを持っています。行の改行数を確認し、必要に応じて減らしたいとします。PHP行の改行数をマージし、必要に応じて減らしますか?
原文:私は最終的に何をしたい
Hello\n
\n\n\n\n\n\n\n\n\n\n\n\n\n
Goodbye
:
Hello\n
\n
Goodbye
だから基本的に私は、行で2つの改行の最大にしたいです。 これをPHPでどのように実現できますか?
ありがとうございました。
私はユーザーがPHPで投稿を投稿できるテキストエリアを持っています。行の改行数を確認し、必要に応じて減らしたいとします。PHP行の改行数をマージし、必要に応じて減らしますか?
原文:私は最終的に何をしたい
Hello\n
\n\n\n\n\n\n\n\n\n\n\n\n\n
Goodbye
:
Hello\n
\n
Goodbye
だから基本的に私は、行で2つの改行の最大にしたいです。 これをPHPでどのように実現できますか?
ありがとうございました。
PCRE:
preg_replace('/\n{3,}/m', "\n\n", $text);
私はこれが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の間の空白の可能性も考慮に入れません。
tanduの応答に追加するには、この変化は、同様のキャリッジ・リターンを占め:
preg_replace(array('/\r/m','/\n{3,}/m'), array("\n","\n\n"), $text);
まず\r\n
シーケンスは\n\n
に還元されるように、S「の\n
にS」の\r
を変換します。その後、フィルタ\n
が完了してジョブが終了します。
この場合、M修飾子は何をしますか?それは唯一のboudariesに使用されていますか? –
あなたは正しいです。 'm'修飾子は必要ありません。 –