[英]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.