Заинтересовался расширением php tidy, которое работает с html и может помочь в разработке шаблонов. процитирую скрипт с комментариями

<?php
echo "
\n";
//получим готовый html страницы, в данном случае главная страница litepublisher.ru
$s = file_get_contents('http://litepublisher.ru/');
// конфигурация для tidy, взята из примера в документации
$config = array(
'indent' => true,
'output-xhtml' => true,
'wrap' => 200);


$tidy = new tidy;
$tidy->parseString($s, $config, 'utf8');
// следущая строка исправляет невалидный html, а также форматирует с отступами
//$tidy->cleanRepair();
// можно вывести исходник страницы
//echo htmlspecialchars($tidy);
// получить список ошибок и предупреждений
$tidy->diagnose();
// вывести все предупреждения и ошибки
echo $tidy->errorBuffer;
//если нужна исходная строка с ошибкой
$l = explode("\n", $s);
//echo htmlspecialchars($l[94]);
?>/code>


По умолчанию tidy ругается на пустой тег в посте у которого нет меток. Также ругается на пустую строку в href тега a. Пустая строка в есть в аяксовых виджетах. Как вариант можно туда поместить # и ссылка в браузере станет внутристраничной, что мне лично не нравиться.