Редактирование экранированного кода (для отображения)

StackOverflow https://stackoverflow.com/questions/232689

  •  04-07-2019
  •  | 
  •  

Вопрос

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

Моя проблема возникает, когда я включаю тег texttarea в текст, потому что он преждевременно закроет область редактирования и отрежет остальную часть того, что я пишу, когда она сохранена (или больше, если я не закрываю тег).

Итак, мой вопрос: это предполагаемое поведение со стороны браузера? - GT &; Так что мне нужно экранировать текст (возможно, код и предварительные теги)? каждый раз, когда я хочу внести в него изменения? Или я что-то не так делаю?

* Обратите внимание, что я единственный, кто использует это, и это в основном только для обучения, поэтому я не беспокоюсь о аспекте безопасности, а о том, как проверять мне нужно обрабатывать мой HTML при использовании его в браузере и иметь он ведет себя ожидаемым образом.

Это было полезно?

Решение

@Bob: htmlentities () отличается от htmlspecialchars ()

htmlentities () преобразует каждый символ с кодом ASCII в этот код. htmlspecialchars () будет делать только те, которые являются особыми в HTML, такие как & amp ;, quotes и < или >

Это довольно существенное различие, которое может сломать некоторые вещи, а также может привести к огромным результатам при использовании htmlentities ().

Другие советы

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

Большинство веб-языков имеют некоторые библиотечные функции для экранирования символов, интерпретируемых HTML, поэтому проверьте документацию для языка, который вы используете.

Как сказал Дэррил, html_entities () (который является псевдонимом для htmlspecialchars ()) добьется цели в PHP.

Это предполагаемое поведение со стороны браузера? Да, браузер интерпретирует ваш (неэкранированный) HTML-код как HTML-теги, принадлежащие странице, и воздействует на них.

Так что мне нужно экранировать текст (возможно, код и предварительные теги)? Да, как сказал Дэррил Хейн, используйте htmlspecialchars (). Они будут правильно отображаться браузером, и вам не нужно & Quot; unescape & Quot; данные в том виде, в каком они возвращаются после редактирования.

... я что-то не так делаю? Вы должны проверить любые входные данные, поступающие в ваше приложение или покидающие его, и посмотреть, есть ли в нем какие-либо символы, которые имеют особое значение для браузера, для сервера базы данных и для других частей вашего решения. Вы должны правильно экранировать специальные символы для каждого взаимодействия (например, mysql_escape_string () для базы данных MySQL, htmlspecialchars () для HTML и т. Д.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top