(PHP 5, PHP 7, PHP 8)
DOMDocument::loadHTMLFile — Загрузка HTML из файла
Функция разбирает HTML-документ из файла filename
.
В отличие от загрузки XML, HTML не обязан быть правильно построен для загрузки.
Для разбора и обработки современной HTML-разметки рекомендуют вместо класса DOMDocument пользоваться классом Dom\HTMLDocument.
Функция разбирает входные данные по стандарту HTML 4. Правила синтаксического анализа по стандарту HTML 5, с которым работают современные браузеры, содержат отличия. Итоговая структура DOM зависит от входных данных. Поэтому функцию нельзя использовать для безопасной очистки HTML-разметки.
Поведение при разборе HTML-разметки зависит от версии библиотеки
libxml
, это проявляется острее
при наступлении граничных условий и при обработке ошибок.
Разметку, которая соответствует спецификации HTML5, разбирают
методом Dom\HTMLDocument::createFromString()
или Dom\HTMLDocument::createFromFile(), которые добавили в PHP 8.4.
Например, отдельные HTML-элементы при встрече неявно закрывают родительский элемент. Правила автоматического закрытия родительских элементов в спецификациях HTML 4 и HTML 5 неодинаковые. Поэтому итоговая структура DOM, которую видит класс DOMDocument, отличается от DOM-структуры, которую видит браузер, что создаёт риск взлома итоговой HTML-разметки злоумышленником.
Функция возвращает true
, если выполнилась успешно, или false
, если возникла ошибка.
Если через аргумент filename
передана пустая
строка или файл ничего не содержит, будет сгенерировано предупреждение.
Это предупреждение генерируется не libxml, поэтому оно не может быть
обработано функциями обработки ошибок
libxml.
Несмотря на то что некорректная HTML-разметка обычно успешно загружается, эта функция
иногда генерирует ошибки уровня E_WARNING
при обнаружении
плохой разметки. Для обработки таких ошибок пользуются
функциями обработки ошибок модуля libxml.
Версия | Описание |
---|---|
8.3.0 | Теперь функция имеет предварительный логический (bool) тип возвращаемого значения. |
8.0.0 |
При статическом вызове функции теперь будет выбрасываться ошибка Error.
Ранее выдавалась ошибка уровня E_DEPRECATED .
|
Пример #1 Создание документа
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("filename.html");
echo $doc->saveHTML();
?>