html_entity_decode Завершить?

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

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

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

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

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

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