2016-04-25 4 views
0

Я использую html_entity_decode($row['Content']) для отображения некоторых JSON данных, содержащих HTML в документе PHP. Проблема в том, что некоторые возвращаемые данные имеют открытые теги HTML, такие как <strong>, которые затем продолжают отображаться после содержимого.html_entity_decode Завершить?

Есть ли способ прервать HTML?

ответ

1

Если вы когда-либо принимать необработанный HTML от внешнего источника, чтобы встроить в свой сайт, вы должны всегда, всегда, переформатировать и белый список его. Вы не знаете, что может содержать этот сторонний HTML-код, и у вас нет гарантии, что он действителен; но на вашем сайте вы предположительно хотите, чтобы гарантированный действительный HTML с определенными ограничениями на его содержимое (или вы действительно хотите включить вложение произвольных <script> тегов ...?!).

Это означает, что вы хотите:

  1. разбора HTML и экстракт любой структурной информации, которая в нем
  2. фильтр, структура, чтобы только разрешенные элементы, а затем
  3. производят свой собственный HTML от того, вы можете гарантировать, что это синтаксически допустимо.

Предположительно лучшая библиотека PHP, которая составляет HTML Purifier. Без использования библиотеки вы использовали бы ленивый HTML-парсер, например, DOMDocument для проверки и фильтрации содержимого, а затем встроенного DOMDocument::saveXML для создания нового дезинфицированного HTML.

+0

Это интенсивность процессора. Я считаю, что это проще реализовать ... http://stackoverflow.com/a/37111254/1487576 – Karma

Смежные вопросы