Как обрабатывать HTML с DOMDocument PHP, если кодировка исходного HTML неизвестна?

Я только что столкнулся с тем, что HTML-документ, закодированный с помощью UTF-8, становится некорректным после loadHTML(),

В стеке много таких QnA:

Однако, как я понимаю, большинство ответов основаны на предположении, что исходная кодировка является UTF-8. Так что рекомендуется использовать mb_convert_encoding() функционировать таким образом:

$dom->loadHTML(mb_convert_encoding($document_in_utf_8, 'HTML-ENTITIES', 'UTF-8'));

Я полагаю, что это будет работать только если исходный документ является в UTF-8. К сожалению, в моем мире исходный документ может иметь любую доступную кодировку: Windows-1251, UTF-8, KOI8-R и так далее …

Итак, какова лучшая практика для решения этой проблемы для любой кодировки?

ОБНОВЛЕНИЕ 1: Просто найди mb_detect_encoding() функция. Это хорошая практика, чтобы использовать один для обнаружения кодировки? Таким образом:

$encoding = mb_detect_encoding($doc);
$doc = mb_convert_encoding($doc, 'HTML-ENTITIES', $encoding);
$dom->loadHTML($doc);

Протестировал это на нескольких документах: похоже, это работает, но могу ли я быть уверен, что это будет работать во всех разумных случаях?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]