HTML-отображение статей

Привет, ребята, я создаю веб-приложение, в котором пользователи могут входить в систему, публиковать/читать статьи, комментировать и прочее.

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

оставив в стороне проверки и SQL-инъекции (это уже сделано), мне нужна помощь с отображением статьи, хранящейся в базе данных MySQL, в виде ТЕКСТА.

Я беру текст статьи из текстовой области и отображаю его в теге p, но затем, очевидно, он пропускает символы новой строки, введенные пользователями, но тег pre делает его уродливым, предоставляя широкий прокручиваемый дисплей. Я хочу знать, какой тег подходит для этой цели? или даже брать статью через textarea правильно?

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


person Ishaan shringi    schedule 07.05.2016    source источник
comment
разве это не вопрос? я тебя не понял :(   -  person Ishaan shringi    schedule 07.05.2016
comment
Если это вопрос, то где вопросительный знак? (#обнимашки)   -  person Webeng    schedule 07.05.2016
comment
хорошо, я попытался сделать это более ясным. Извините   -  person Ishaan shringi    schedule 07.05.2016
comment
если у вас есть ответ на любой из них, милости просим   -  person Ishaan shringi    schedule 07.05.2016


Ответы (3)


Моя рекомендация будет из двух вариантов:

<сильный>1. Используйте обычный текст: если вы хотите, чтобы пользователь не мог помещать какой-либо HTML в содержимое, покажите пользователю простую текстовую область ввода HTML, затем, когда пользователь вводит новую строку (клавиша Enter), это будет \n в вашем база данных. Если вы хотите напечатать статью, просто используйте nl2br($article_contents);, и она преобразует новые строки (\n) в разрывы строк HTML.

<сильный>2. Rich Text: если вы хотите, чтобы пользователи помещали HTML-содержимое в статью, было бы легко использовать любые текстовые редакторы, такие как TinyMCE. TinyMCE позволит вашим пользователям легко выполнять простое форматирование HTML, такое как заголовки, полужирный шрифт, курсив, выравнивание абзаца, цвет, добавление изображений. Затем на стороне PHP используйте функцию strip_tags, чтобы разрешить только определенные теги, чтобы пользователь не мог вставить какой-либо вредоносный код, такой как XSS-инъекции, в содержимое HTML. Например:

strip_tags($article_contents, "<u><b><i><font><span><p>");
person Ghulam Ali    schedule 07.05.2016
comment
эй, спасибо, но будет ли текстовый онлайн-редактор нормально работать в мобильных браузерах? - person Ishaan shringi; 07.05.2016
comment
Это не будет текстовый онлайн-редактор, вам нужно будет включить библиотеку (css, js) в свой шаблон. Если я не ошибаюсь, TinyMCE будет нормально работать в новых мобильных браузерах, я думаю, что он использует HTML-атрибут contenteditable, который может не работать в старых браузерах: caniuse.com/#feat=contenteditable - person Ghulam Ali; 08.05.2016

Предлагаемый ответ:

Используйте 1_

Такие теги, как <p></p><div></div>, занимают как можно больше места, в то время как <span></span> занимает как можно меньше места, чтобы хранить все, что находится внутри него, поэтому он может быть более подходящим для вас.

Дайте мне знать, если это сработало для вас.

person Webeng    schedule 07.05.2016

В PHP вы можете использовать функцию nl2br, которая изменяет все символы новой строки на HTML-тег BR. http://php.net/nl2br

person jiwopene    schedule 07.05.2016