2010-12-13 2 views
3

У меня есть текстовое поле, где пользователи вводят текст (с таким количеством возвращает, как они этого хотят), и я беру это значение, вставляю его в базу данных, а затем обновляю текстовую область значение с таковым в базе данных.Текстовая область, nl2br, line breaks galore

<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. Проблема, с которой я сталкиваюсь, заключается в том, что при отправке значения и вставке его в базу данных он удваивает количество строк, когда он заполняет значение текстового поля. Так что, если они печатают

Эй разрыв линии Foobar

это сделает значение текстового поля в

Эй разрыв строки разрыв строки Foobar

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

функция я использую, чтобы превратить nl2br в текстовой области «возвращается». Однако, если я вытащил nl2br_lose из возврата, у него будет только один
, поэтому проблема должна быть там. У меня были проблемы с этим в течение большей части сегодняшнего дня.

Заранее благодарен!

ответ

3

в nl2br_lose:

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

конечно, он обменивается readibility для простоты. другой вариант - написать функцию для вызова вместо 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_lose к br2nl :)

+0

upvote для br2nl вместо nl2br_lose :) – willium