我有一个textarea,用户输入文本(尽可能多地返回),然后我取出该值,将其插入数据库,然后使用该值更新textarea的值一个在数据库中。
<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/>', '
', str_replace('<br />', '
',str_replace('<br>', '
',str_replace('<br >', '
',$string))));
}
是我用来将nl2br变成textarea“return”的函数。但是,如果我从返回中取出nl2br_lose,它只有一个,所以问题必须在那里。我今天的好时光一直遇到麻烦。
提前致谢!
答案 0 :(得分:3)
在nl2br输了:
`return preg_replace("/<br\s?\/?>/", '', $string); //removes <br>, <br/>, <br />, <br >`
当然,为了简单起见,它交换了可读性。另一个选择是编写一个函数来调用而不是nl2br:
function stripnl2br($string) {return str_replace("\n", '', nl2br($string));}
答案 1 :(得分:2)
您只需将br
匹配替换为空,因为nl2br不会删除空格。
return str_replace(array(
'<br/>',
'<br />',
'<br>',
'<br >'
), '', $string);
P.S。您可能希望将名称从nl2br_lose
更改为br2nl
:)
答案 2 :(得分:0)
nl2br在换行符前添加br,但不删除换行符。当您在nl2br_lose中包装该输出时,它需要:
blahblah<br>\nblahblah
来自nl2br并将其变为
blahblah\n\nblahblah