Tidy и htmlpurifier

Tidy это библиотека, разработанная одним из работников W3C для чистки html кода от неправильных тэгов. Tidy в оригинале - библиотека на си, но к счастью - она легко устанавливается как модуль в php, а в php 5 уже включён в дистрибутив.

Tidy незаменима в ситуациях типа

  • Показа части статья, когда короткого описания нет, а ставить отдельно блоки, указывающие какая часть статьи идёт "под cut" невозможно, из-за чего приходится обрезать статью на половине со страхом что обрез прийдётся на тэг.
  • Клиент как полный чайник копирует содержимое статьи из MS Word, и в WYSIWYG с радостью вносятся могучие тэги офиса. А потом ещё жалуется что невозможно изменить шрифт.
  • По-зарез понадобился valid XHTML на сайте, желательно ещё и с красивой разметкой, а в коде - чёрт ногу сломит, что уж говорить о полном анализе мелких недочётов, которые так хочет стандарт (типа обязательное наличие alt в img тэге).

Работать достаточно просто. Создаём объект, даём конфигурацию, согласно документации

$objTidy = new tidy; $arrConfig = array( 'indent' => true, 'output-xhtml' => true, 'clean' => true ); $objTidy->parseString($strSource, $config, 'utf8'); $objTidy->cleanRepair(); print_r($objTidy);

В минусы можно отнести нагрузку и медленную скорость, но оно и не мудрено - парсинг скорей всего рекурсивный и создание правильного дерева даже для простых xml структур может занимать уйму ресурсов, что уж говорить про их проверку и исправление.

Одно дело когда статью вводит администратор, другое дело, когда статью вводит анонимный пользователь. Защитой сайта и пользователей от всевозможных XSS занимается html purifier

RSS

Комментарии

  • lusever
    avatar
    А не подскажите, есть ли библиотека, которые преобразуют html в xml кроме tidy? У моего хостера Tidy не поставили.
  • Дмитрий
    avatar
    html purifier как настроить? (