Как новые строки работают в текстовом поле с php?

Я создаю сайт публикации новостей, и единственное, что я не могу сделать на сайте, - это ввести и показать новую строку.

На сайте есть текстовое поле для написания статей, если я нажму ENTER во время набора, он перейдет в новую строку, но после того, как все отправлю, и сделаю запрос к mysql, чтобы вытащить и повторить то, что я набрал, новая строка не отображается. Все тексты рядом друг с другом. Итак, мне было интересно, могу ли я вводить и выводить символы новой строки в текстовое поле с помощью PHP?


person Community    schedule 30.09.2012    source источник
comment
Я не понимаю о чем ты. Но у меня есть простой ввод текстового поля, а затем SQL-запрос для отправки данных в базу данных. Больше ничего не использую.   -  person    schedule 30.09.2012
comment
Вы имеете в виду, что эти символы новой строки исчезают?   -  person Stano    schedule 30.09.2012
comment
Да, когда я делаю запрос и возвращаю данные из БД, нет абсолютно никаких строк. Он просто создает новые строки, когда достигает предела ширины div. Но, я проверил БД, в таблицах есть новые строки, но нет ‹br/› ‹/p› или даже \ n.   -  person    schedule 30.09.2012
comment
Что ж, если вы выводите текст в div, вы должны заменить \n на <br/> или разделить текст символом новой строки и заключить его в теги <p> и </p>. Как сказал Квентин в своем ответе ниже. Например. вот так: echo str_replace("\n",'<br/>',$text);   -  person Stano    schedule 30.09.2012
comment
Привет, большое спасибо за то, что не отставал от этого вопроса, но, поскольку я новичок, я сделал снимки экрана с изображений здесь. imm.io/Gcda   -  person    schedule 30.09.2012
comment
Хорошо, imho, вы можете попробовать заменить $row[c_comment] на ".htmlspecialchars(str_replace("\n",'<br/>',$row[c_comment]))." или, может быть, ".str_replace("\n",'<br/>',htmlspecialchars($row[c_comment])).", или, может быть, просто ".str_replace("\n",'<br/>',$row[c_comment])."   -  person Stano    schedule 30.09.2012
comment
Потрясающие! Второй сработал. Я просто искал другое решение, прежде чем ваше решение, и я получил b12br. Итак, поскольку оба они работают, какой из них более рекомендуемый или стабильный? Потому что отныне мне это будет очень нужно.   -  person    schedule 30.09.2012
comment
Спасибо, я также рад, что это помогло, и думаю, что nl2br, вероятно, быстрее, чем str_replace, и поэтому рекомендуется, как сказал Квентин :-) Удачи!   -  person Stano    schedule 30.09.2012
comment
nl2br (который я предложил в своем ответе) делает то же самое, что и str_replace("\n",'<br/>', $input).   -  person Quentin    schedule 30.09.2012
comment
Спасибо вам обоим. Ты замечательный.   -  person    schedule 30.09.2012


Ответы (1)


Отправляя форму, вы отправляете текст.

Когда вы помещаете этот текст в HTML-документ, это HTML.

В HTML новая строка - это просто кусок белого пространства с тем же значением, что и пробел или табуляция.

Если вы хотите, чтобы отображались новые строки, вам нужно обернуть их разметкой, которая заставляет их отрисовываться (например, элемент <pre> или элемент со свойством white-space, установленным для их отрисовки), или вам нужно заменить их. с подходящей разметкой.

Очень примитивной заменой была бы nl2br функция PHP. Более продвинутый вариант будет генерировать <p> элементов и по-разному обрабатывать разное количество последовательных новых строк (например, Markdown парсер, такой как тот, который используется Stackoverflow).

person Quentin    schedule 30.09.2012
comment
Вот почему я прошу помощи. - person ; 30.09.2012
comment
Привет, я думаю, ты не понимаешь моей проблемы. Но я загрузил это изображение, чтобы очень хорошо его описать. Если можете, взгляните и скажите мне, что вы думаете. imm.io/Gcda - person ; 30.09.2012
comment
Нет, я прекрасно понял вопрос. - person Quentin; 30.09.2012