Я попробовал несколько методов, чтобы узнать, какая часть строки html неверна.
$dom->loadHTML($badHtml); $tidy->cleanRepair(); simplexml_load_string($badHtml);
Ничто не ясно, какая часть html недействительна. Возможно и дополнительный вариант конфигурации для одного из исправлений. Есть идеи ?
Мне нужно это, чтобы вручную исправить html-вход от пользователей. Я не хочу передавать на автоматизированные процессы.
Я попробую загрузить оскорбительный HTML в DOM-документ (как вы уже делаете), а затем с помощью simplexml исправить ситуацию. Вы должны иметь возможность запускать быстрый diff, чтобы увидеть, где находятся ошибки.
error_reporting(0); $badHTML = '<p>Some <em><strong>badly</em> nested</stong> tags</p>'; $doc = new DOMDocument(); $doc->encoding = 'UTF-8'; $doc->loadHTML($badHTML); $goodHTML = simplexml_import_dom($doc)->asXML();
Вы можете сравнить очищенную и плохую версию с PHP Inline-Diff, найденную в ответ на этот вопрос stackoverflow .