簡體   English   中英

PHP合並一行中的換行符數量並在必要時減少它?

[英]PHP Merge the number of line-breaks in a row and reduce it if necessary?

我有一個textarea,用戶可以用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);

我會做一個循環替換

$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;
}

只要有可能,這將取代3 \\ n乘以2 \\ n。

請記住,你可能需要用\\ n替換所有\\ r \\ n,因為你的輸入永遠不會是完美的。 這也沒有考慮到\\ n之間的空格的可能性。

要添加到tandu的響應,此變體也會考慮回車:

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

首先將\\r轉換為\\n ,以便將\\r\\n序列縮減為\\n\\n 那么對於連續的過濾器\\n的完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM