Как убрать лишние <br> .nl2br.

Frenk

Guest
Как убрать лишние <br> .nl2br.

При добавлении текста в базу, текст, ессно, проходит ф-цию nl2br.
Все ок. Теги переноса вставили.
Но... При редактировании текса с последующим сохранением, тегов переноса строки становится в два раза больше. Затем - в три раза и тэгэдэ.
Как от этого избавиться?
 

Кром

Новичок
Обрабатывай текст при выводе. В базе пусть он лежит как есть.
 

salivon

Guest
Когда выводишь текст в форму делай обратный процесс

$body = strip_tags($body);
$body = stripslashes($body);

или

function br2nl($string) {
$string = str_replace('<br />|<br/>|<br>', '\r\n', $string);
return $string;
}
 

Фанат

oncle terrible
Команда форума
salivon, больше столько не пей.
И воздержись от ответов на форуме
Тебе пока только читать надо.

strip_tags делать нельзя. Человек, старался, хтмл ваял а ты ему все зарезал.
Для вывода тегов в форму надо использовать htmlspecialchars

stripslashes делать ВООБЩЕ не надо.

function br2nl($string) - это бред сивой кобылы. Ты бы хоть запустил ее перед тем, как публиковать...
 

Frenk

Guest
2Фанат
Вопрос я задал именно из-за того, что не хотел использовать strip_tags.
К сожалению, htmlspecialchars не спасает (и не должен).
 

salivon

Guest
при insert делай nl2br,
а при update не делай...
 

Кром

Новичок
>при insert делай nl2br,
>а при update не делай...

Это не выход. Если вставить при редакции блок нового текста, такая схема будет бессмысленна.
 

Frenk

Guest
Ты хорошо подумал?
Все, что было вставлено, херится при апдпте.
 

Georgy

Guest
При добавлении текста в базу, текст, ессно, проходит ф-цию nl2br.
это не естественно. Текст должен храниться как есть. И тогда не будет проблем с прогрессией эндофлайнов.
 

salivon

Guest
при вводе делаешь nl2br.

А при выводе в форму подставляешь вместо br nl

Че тут не понятного и никакого бреда я в этом не вижу.
 

salivon

Guest
Да. Почему бы и нет?
Ставишь символ конца строки да и все. При апдэйте эти же символы станут опять <br>...
 

KR

alive in new life
не совсем
nl2br меняет \r\n не на <br />, а на <br />\r\n

соотв. при выводе в форму необходима обратная замена, только и всего
и тут в помощь str_replace

либо вообще проще str_replace ("<br />", "", $your_text);
итого просто вырежем <br />
а при сохранении как и обычно nl2br($your_text);

вроде так.
 

Alex2003

Новичок
Не... я не понимаю. Редактор вбивает код в окошко. Есть 2 варианта - он либо может содержать теги, либо нет.
В перврм варианте ничего трогать не надо - юзер сам должен набить <br /> где ему хочется, надо только добавить слеши перед вписыванием в БД, да и то не всегда.
Во втором случае, убрать теги, [m]str_replace[/m] "\r"->"", "\n"->"<br />" при записи и обратно, при прорисовке. Проблемы не вижу я. :( Мож с утра просто.
 

Georgy

Guest
Вы что головой принципиально не думаете?

есть такой тег в html, называеца <TEXTAREA> и там стоит только нажать на enter и о чудо! появляется EOL, а потом пишете созданый текст в базу. При выборке делаете с текстом что угодно, например:

PHP:
print nl2br( $my_text_from_database );
 

Frenk

Guest
Как те сказать. Конечно, проще всего запретить использовать HTML.
Но! Все же всякие там <b> и т.д. пущай будут, причем без засорения кода всекими . Так проще. Однако, человек (читай - заказчик) не хочет ставить <br>. Ну нет, и все.
Я, собсна, сперва забил на прогрессию эндофлайнов, но сейчас захотел выполнить все более добросовестно.
 
Сверху