Я создаю форум, на котором я хочу, чтобы отображались только теги img, а все остальные теги были надежно экранированы, , но не удалены. Каков наилучший метод для решения этой задачи, кроме создания функции с нуля?
Я пытался использовать HTML Purifier, но он удаляет все нежелательные теги и сохраняет только нужные. Кроме того, я пробовал другие функции, такие как strip_tags и htmlentities
, а также оператор escape, используемый в блейде ({{ }}
), но эти функции будут либо удалять ненужные теги (которые я хочу вместо них экранировать), либо экранировать все теги. (что я тоже не хочу, потому что я хочу сохранить теги <img>
и <br>
. Я видел другие похожие заданные вопросы, но, к сожалению, ни один из них мне не помог.
Пока что яdo использует: $post->content = Purifier::clean($request->content);
Для временного удаления ненужных тегов, чтобы предотвратить XSS.
Я ожидаю, что после того, как введенные пользователем данные будут отображены, как показано ниже:
Hi all
<script>alert('hi all')</script>
<img src='sun.png'/>
Хотя сейчасотображается следующее сообщение:
Hi all
hi all
<img src='sun.png'/>
ОБНОВЛЕНИЕ:
Мой вопрос не дублируется на вопрос, который был помечен. Надеюсь, модератор разрешит это.