我有一個textarea,用戶可以在PHP中提交文章。例如,我想檢查一行中的換行數並在必要時減少它。PHP合併行中的換行數並在必要時減少它?
ORIGINAL:
Hello\n
\n\n\n\n\n\n\n\n\n\n\n\n\n
Goodbye
我想到底:
Hello\n
\n
Goodbye
所以基本上我想在一排一個最多2個換行符。 我如何在PHP中實現這一點?
感謝您的任何幫助。
我有一個textarea,用戶可以在PHP中提交文章。例如,我想檢查一行中的換行數並在必要時減少它。PHP合併行中的換行數並在必要時減少它?
ORIGINAL:
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只要有可能。
請記住,您可能需要將\ r全部替換爲\ n,因爲您的輸入永遠不會完美。這也沒有考慮到\ n之間的空格的可能性。
要添加到tandu的響應,該變型中佔回車符號,以及:
preg_replace(array('/\r/m','/\n{3,}/m'), array("\n","\n\n"), $text);
首先轉換\r
「s到\n
的以便\r\n
序列被還原成\n\n
。然後順序\n
的過濾器完成工作。
在這種情況下M修飾符會做什麼?它不是隻用於badaries嗎? – 2012-01-18 16:53:37
你是對的; 'm'修飾符是沒有必要的。 – 2012-01-18 17:05:37