Сохранять и отображать текст точно, как он набирается и отправляется

У меня много проблем, сохраняя точный вид того, как пользователь выдает короткий абзац.

Моя проблема заключается в том, что появляются случайные косые черты и html. Когда люди нажимают клавишу ввода при вводе сообщения, «\ r \ n \» будет отображаться, когда он будет эхом позже. Я попытался это исправить, но теперь, когда пользователь вводит апостроф при составлении сообщения, он вставляется в базу данных с тремя обратными косыми чертами и, таким образом, эхом повторяет с помощью трех обратных косых черт с апострофом. Срыв! Я хочу просто начать все заново!

Вот что я делаю.

  1. Пользователь вводит сообщение в поле ввода и отправляет запросы.
  2. Это сообщение вставляется в базу данных с типом varchar (280) через php.
  3. Это сообщение получает эхо через php.

Я пробовал много разных вещей, таких как nlbr и strip_tags и stripslashes и mysql_real_escape_string и другие. Возможно, я использую все это в определенной комбинации, которая его испортит.

Таким образом, мой вопрос заключается в том, как лучше всего сохранить то, как кто-то создает текстовый абзац, который позже будет эхом через php, чтобы выглядеть так, как они набрали его?

  1. Убедитесь, что Magic Quotes выключены или, если вы не можете отключить их, очистите свои строки от них. Подробнее читайте в руководстве: http://www.php.net/manual/en/security.magicquotes.php
  2. При вставке вашего текста в базу данных избегайте его правильного синтаксиса SQL один раз или, лучше, используйте подготовленные инструкции. См. Как я могу предотвратить SQL-инъекцию в PHP? и «Великий эскапизм» (или: что вам нужно знать для работы с текстом в тексте) .
  3. При выводе в HTML используйте htmlspecialchars чтобы избежать инъекций HTML или простых синтаксических проблем, а затем использовать nl2br для форматирования разрывов строк специально для HTML.

Это в основном это.

На втором шаге вам нужно избежать его с помощью функции mysql.

Но для правильного вывода его вам нужно сделать следующее

 <pre><?= htmlentities($mysqlRow['data']); ?></pre> 

Это будет получать из базы данных необходимую информацию и будет выводить ее так, как есть. Со всеми пробелами и вкладками и html-тегами. (Если пользователь вводит <html> то выводит <html> как текст)