用textarea接受換行符以及多換行符的處理


首先說明下問題的緣由:

就是我們一般做留言板的時候是用textarea做接收的,那麼textarea默認是不接收換行符號的,所以就產生了這個問題。那要讓textarea接收換行可以直接用nl2br()這個函數類解決。但是這樣就又產生了一個問題,那就是我如果我輸入如下的形式:


那我們接收之後出現的問題就是其實用戶只輸入了幾個沒用的字符,但是裏面又包含很多的換行,那在瀏覽器解析完這個內容之後如果換行符號很多,那就會出現有一條內容很長可能佔據你整個網頁的高度,使得別人看的時候會出現很長的滾動條,那這種體驗是不好的,所以我們需要即可以讓textarea接收換行但是又不會出現上述的問題,那怎麼辦呢?就用如下代碼解決吧:

$str = preg_replace('/(<br \/>)/', '\n', nl2br($_POST['content']));
$str = preg_replace('/(\\\n\s[^.]){1,}/', '<br />', $str);

而且上面這兩行代碼是必須的,否則你就會出現我說的那個問題。


另外就是對於編輯器中也同樣有這個問題,比如一個CSDN的論壇,別人回覆帖子的時候就可以在開始位置寫幾個字符,然後結尾也是幾個字符,然後在中間按住回車鍵不動,你可以按幾分鐘之後再鬆開,然後你點擊回覆,那你看看你回覆之後這個頁面變成了什麼樣,那編輯器的這種可接收換行但又不想出現我說的那種問題的方法的解決辦法是很簡單的,因爲不同的編輯器對於換行的表示是不同的,像我用ueditor測試的時候它的換行表示是:“<p><br /><\/p>”

那你要處理這種很多的換行的話,僅僅需要一個正則替換就可以了,因爲從編輯器獲取來的數據都是一個長字符串在代碼處理上看是輸入一行,所以不需要事先加換行符,這就是爲什麼上面的代碼中必須做第一次替換的原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章