文本区域,nl2br,线条丰富

时间:2010-12-13 00:50:12

标签: php html

我有一个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的值时将换行量增加一倍。 所以,如果他们输入

  

换行   foob​​ar的

它将使textarea的值

  

喂   换行   换行   foob​​ar的

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

是我用来将nl2br变成textarea“return”的函数。但是,如果我从返回中取出nl2br_lose,它只有一个,所以问题必须在那里。我今天的好时光一直遇到麻烦。

提前致谢!

3 个答案:

答案 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