Я создаю большой HTML-документ из фрагментов, предоставленных пользователями, которые имеют неприятную привычку искажаться различными способами. Браузеры достаточно надежны и снисходительны, но я хочу иметь возможность проверять и (в идеале) исправлять любой искаженный HTML, если это вообще возможно. Например:
<td><b>Title</td>
можно разумно исправить:
<td><b>Title</b></td>
Есть ли способ сделать это легко в PHP?






Вы можете использовать HTML Tidy, страницы руководства - здесь.
Не следует использовать Tidy для ненадежных входных данных: htmlpurifier.org/comparison#Tidy
Если вы не можете использовать Tidy (иногда служба хостинга не активирует этот модуль php), вы можете использовать этот класс PHP: http://www.barattalo.it/html-fixer/
Обратите внимание, что проект больше не поддерживается. Последнее его обновление было 07.06.2010. Но он прост в использовании и имеет один единственный файл по сравнению с HTML Purifier.
Я очень рекомендую Очиститель HTML. Со своего сайта:
HTML Purifier is a standards-compliant HTML filter library written in PHP. HTML Purifier will not only remove all malicious code (better known as XSS) with a thoroughly audited, secure yet permissive whitelist, it will also make sure your documents are standards compliant, something only achievable with a comprehensive knowledge of W3C's specifications. Tired of using BBCode due to the current landscape of deficient or insecure HTML filters? Have a WYSIWYG editor but never been able to use it? Looking for high-quality, standards-compliant, open-source components for that application you're building? HTML Purifier is for you!
Однако с этим по-прежнему мало проблем. Раньше он удалял предполагаемые пробелы, вызывая некоторые проблемы с JS. Также он анализирует теги <script> таким образом, что IE6 иногда их не распознает - если вы все еще хотите оптимизировать свой webby для IE6.