2010-12-13 69 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