Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > textarea - Преобразование <br /> в "\n"


Автор: patience 10.9.2007, 16:49
Проблема вот в чём: 

при добавлении информации из textarea в БД, она изменяется. Происходит  замена bb кода на html сущности + замещаются всё переводы строк функцией nl2br(). Всё работает...
При извлечении информации происходит обратное преобразование html сущностей в bb код и вывод в textarea, но  вместо одного <br /> получаю два "\n"

т.е. если в БД было отправлен текст типа:

Код

1 [I]2[/I] 3 [I]4 5[/I] 6
[CENTER]10[/CENTER]
[RIGHT]20 30 40[/RIGHT]


При извлечении этого же текста в текст арию получаю:
Код

1 [I]2[/I] 3 [I]4 5[/I] 6

[CENTER]10[/CENTER]

[RIGHT]20 30 40[/RIGHT]


после каждой строки получем +1 "\n" в чём проблема?

Преобразование проводятся используя след. код, участок отвечающий за преобразование <br /> в "\n"
Код

$patterns = array("/(?:\<br \/\>)/mis", ...);                  
$replace = array("\n", ...);    
$infa = preg_replace($patterns, $replace, $infa);        





Автор: sTa1kEr 10.9.2007, 17:06
patience, это происходит из-за того, что функция http://us2.php.net/manual/en/function.nl2br.php ставит тэг <br /> перед разделителем строки.
Цитата

Returns string with '<br />' inserted before all newlines.

А вы при обратном переобразовании заменяете <br /> на еще один \n.

Автор: patience 10.9.2007, 17:12
sTa1kEr, ...спасиб...будим  исправлять..., чёт не дочитал в мане )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)