К сожалению, похоже, что DOMDocument
автоматически преобразует все символы в объекты HTML, если только ему не известна кодировка исходного документа.
По-видимому, одним из вариантов является добавление тега <meta>
с типом содержимого / кодировкой к исходной строке, но это означает, что он также будет присутствовать в выводе. Удалить его может быть не так просто.
Другой вариант, о котором я могу подумать, - это ручное декодирование HTML-сущностей с использованием кода, подобного следующему:
$trans = array_flip(get_html_translation_table(HTML_ENTITIES));
unset($trans["""], $trans["<"], $trans[">"], $trans["&"]);
echo strtr($dom->saveHTML(), $trans);
Это серьезно уродливое решение, но я не могу думать ни о чем другом, кроме как использовать другой анализатор HTML. (