Возможно, вы захотите взглянуть на PHP-инструмент под названием HTMLPurifier - имеется демонстрационная страница , если вы хотите быстро проверить, на что он способен.
Он принимает «сортировку» HTML в качестве ввода и дает правильно сформированный HTML в качестве результата; таким образом, вы не заставляете своих пользователей вводить правильно сформированный HTML, но вы можете «исправить» то, что они ввели.
Еще одна приятная вещь - вы можете указать, какие теги и атрибуты разрешены; что тоже хорошо для безопасности:
- , вы можете разрешить теги
<p>
и <strong>
, но не <script>
.
- Вы также можете разрешить
<a>
+ href
; но не <a>
+ onclick
Например, вот какой-то не совсем правильно сформированный HTML, который вы можете ему дать:
<p>this is a <strong>test</p>
<script type="text/javascript">alert('glop');</script>
<p>And this is another <em>te<strong>st</em></strong></p>
А вот правильно сформированный / защищенный HTML, заданный в качестве вывода:
<p>this is a <strong>test</strong></p>
<p>And this is another <em>te<strong>st</strong></em></p>
Что изменилось?
- тег
<strong>
в первом абзаце был автоматически закрыт
- тег
<script>
и его содержимое были удалены
- исправлен порядок закрытия тегов
<em>
и <strong>
во втором абзаце.
Конечно, это был только быстрый пример - надеюсь, это помогло.