textarea не корректно выводит текст

winner2003

Новичок
textarea не корректно выводит текст

Здравствуйте. У меня следующая проблема.

Есть Форма, в форме есть поле
PHP:
<textarea name="info" cols="80" rows="15"  maxlength="10000"></textarea>
Человек вводит там данные ( текст). Если человек переходит на другую строку ( жмет Энтер), то при обработки формы мне выдается сплошной текст.
Например в форме я пишу:

-123
-привет
-спасибо

Мне выводит:
-123-привет-спасибо

В форме я указываю обработку формы php скриптом:
PHP:
<form action="films.php" method=post>
В самом films.php , я сперва создаю переменную:
PHP:
$info = $HTTP_POST_VARS['info'];
Вывод делаю:
PHP:
echo $info.'<br /><br />';

Скажите в чем моя ошибка, или как сделать можно. hands.dll уже правил. Заранее благодарю.
 

winner2003

Новичок
Уважаемый Zerkms спасибо за ответ. Но я новичек и не понял nl2br что это?
 

zerkms

TDD infected
Команда форума
kruglov
не похер ли? :) 2 перевода строки, какое они отношение к делу имеют? :)
 

dimagolov

Новичок
при том, что передавать или не передавать переводы строки из textarea зависит от атрибута wrap
 

dimagolov

Новичок
кстати малоизвестная для многих тема, и атрибут этот "полуофициальный", то есть по-моему в спецификацию не входит (не проверял, но в одном уважаемом мною справочнике он отсутствует), но при этом броузерами поддерживается.
 

kruglov

Новичок
zerkms
Ну что вы вмешиваетесь в воспитательный процесс? Это не для вас загадка. Ну давайте с вами про это поговорим:

Давайте, объясняйте мне, почему в echo для перевода строк написано <br>, а не просто ентер нажат.
 

winner2003

Новичок
Прочитал все. Не получается. Wrap это для самой textarea, чтобы когда я там ввожу данный, все нормально отображалось. А мне надо когда я данные этой формы обработаю с помощью скрипта и у меня там данные уже выводятся в одну строчку.
т.е. в скрипте написано так : echo $info.'<br /><br />';
А я вижу: -123-привет-спасибо, текст сливается, поэтому приходится БР писать чтоб на следующую строчку перешло или Два БР чтоб отступ строчки был.


nl2br тоже немного не то, как я данные которые в переменной разложу на кусочки....
 

kruglov

Новичок
winner2003
Про wrap - это они немножко пошутили.

Вот вы сами говорите, <br> пишете для перевода на новую строчку. Так, хорошо. Значит вы в курсе, что если вы в html просто нажмете ентер, то не будет перевода на новую строчку, так? И надо писать специальную команду для перевода строки?

Превосходно.

Осталось только дойти до того, что данные, введенные из textarea, тоже выводятся как html и в них точно так же нажатия кнопки enter не делают новых строк.

А можно объяснить, почему "nl2br тоже немного не то" так, чтоб и я понял?
 

winner2003

Новичок
Нашел:
function nl2br_indent($string, $indent = 0)
{
//remove carriage returns
$string = str_replace("\r", '', $string);

//convert indent to whitespaces if it is a integer.
if (is_int($indent)) {
//set indent to length of the string
$indent = str_repeat(' ', (int)$indent);
}

//replace newlines with "<br />\n$indent"
$string = str_replace("\n", "<br />\n".$indent, $string);
//add the indent to the first line too
$string = $indent.$string;

return $string;
}

И обявлять : echo nl2br_indent($Название переменной, 4)."\n";

Работает! Рад до чертиков!
 

Akick

Новичок
Автор оригинала: winner2003
function nl2br_indent($string, $indent = 0)
{
//поскипано голодными мышами
}
//опять же мышки прошлись
:eek: А нах...фиг?
Чем nl2br таки не устраивает?
Ну опишите задачу полностью тогда, ибо судя по началу диалога - большего и не надо?
 

kruglov

Новичок
Angerslave
Где он про это писал?

У нас уже в HTML 4 пробела можно пробелами ставить?

Я прекрасно понимаю, что делает цифра 4 в приведенном коде.
Мне интересно, понимает ли это автор темы...
 

Angerslave

Новичок
kruglov
ИМХО, ему это только для стройности исходников надо... Хотя кто знает :)
 
Сверху