2010-12-13 70 views
3

我有一個textarea,用戶輸入文本(儘可能多的返回,如他們想要的),然後我將該值插入數據庫,然後更新textarea值與數據庫中的值。Text Area,nl2br,換行符

<textarea maxlength="500" cols="110" name="description" rows="15"><?php if(isset($newDesc)) echo snl2br_lose(nl2br($newDesc)); else echo nl2br_lose(nl2br($user->desc));?></textarea> 

是我的html。我遇到的問題是,在提交價值並將其插入到數據庫工作中時,它會在填充textarea的值時使換行量增加一倍。 所以,如果他們鍵入

換行符 Foobar的

就會使textarea的價值

換行符 換行符 Foobar的

function nl2br_lose($string) { 
    return str_replace('<br/>', '&#013;', str_replace('<br />', '&#013;',str_replace('<br>', '&#013;',str_replace('<br >', '&#013;',$string)))); 
} 

是我使用轉nl2br到textarea的 「返回」 功能。但是,如果我從退貨中取出nl2br_lose,它只有一個
,所以問題必須在那裏。在今天的大部分時間裏,我都遇到過這個問題。

在此先感謝!

回答

3

在nl2br_lose改變:

`return preg_replace("/<br\s?\/?>/", '', $string); //removes <br>, <br/>, <br />, <br >` 
當然

,它可讀性交換爲簡單起見。另一種選擇是寫一個函數來代替nl2br:

function stripnl2br($string) {return str_replace("\n", '', nl2br($string));} 
0

nl2br在換行符前添加br,但不刪除換行符。當您纏繞在你的nl2br_lose該輸出需要:

blahblah<br>\nblahblah 

從nl2br並把它變成

blahblah\n\nblahblah 
2

你只是需要用什麼代替br比賽,因爲nl2br不會刪除空白。

return str_replace(array(
     '<br/>', 
     '<br />', 
     '<br>', 
     '<br >' 
    ), '', $string); 

P.S.你可能想的名字從nl2br_losebr2nl :)

+0

upvote for br2nl而不是nl2br_lose :) – willium 2010-12-13 05:17:32