РЕДАКТИРОВАТЬ: Перечитав мой пост, я думаю, что мне немного неясно, в чем проблема. Позвольте мне попытаться перефразировать это:
Пользователи могут оставлять комментарии на моем сайте, используя поле textarea в форме. Должна быть возможность добавить разрывы строк в комментарии, используя <br />
. Затем комментарий сохраняется в виде строки в базе данных mysql (экранируется для обеспечения его безопасности), а затем извлекается из базы данных и отображается на сайте. Обычные разрывы строк не распознаются при отображении комментария.
Пользователи могут редактировать свои комментарии, и в этом случае исходный комментарий отображается в поле текстовой области, которое необходимо изменить (см. Изображение ниже). Проблема заключается в том, что если присутствует какой-либо <br />
, код недействителен как XHTML 1.0 (см. Сообщение об ошибке ниже).
Могу ли я сделать код действительным, используя любой другой тип переноса строки? Как указано в комментариях, обычные разрывы строк в сочетании с xml: space = "preserve" не работают (разрывы строк отображаются в поле textarea, но не тогда, когда комментарий отображается как обычный текст на сайте).
Оригинальный вопрос:
У меня есть веб-форма, которая содержит поле textarea для комментариев, и я хочу, чтобы он мог добавлять разрывы строк с помощью <br />
. Ниже приведен простой пример:
(источник: shipit.se )
Он работает, как задумано, однако он не проверяется как переходный XHTML 1.0 при использовании службы проверки W3C. Это ошибка, которую я получаю:
- Строка ошибки 90, столбец 1587: тип документа не допускает здесь элемент "br"
…ription" rows="0" cols="0">Test<br />line break</textarea></dd><dt class="cha
Элемент, указанный выше, был найден в контексте, где он не разрешен. Это может означать, что у вас неправильно вложенные элементы - например, элемент «style» в разделе «body» вместо «head» - или два элемента, которые перекрываются (что недопустимо).
Одной из распространенных причин этой ошибки является использование синтаксиса XHTML в документах HTML. Из-за правил HTML для неявно закрытых элементов эта ошибка может создавать каскадные эффекты. Например, использование «самозакрывающихся» тегов XHTML для «meta» и «link» в разделе «head» документа HTML может привести к тому, что синтаксический анализатор выведет конец раздела «head» и начало «body» раздел (где «ссылка» и «мета» не допускаются; следовательно, сообщается об ошибке).
Есть ли способ сделать допустимый код разрывов строк, или мне нужно найти обходной путь (например, использовать специальные теги для разрывов строк в поле textarea, а затем заменить их на <br />
позже при отображении комментария )