DOMDocument::loadHTMLFile

(PHP 5, PHP 7, PHP 8)

DOMDocument::loadHTMLFile Загрузка HTML из файла

Описание

public DOMDocument::loadHTMLFile(string $filename, int $options = 0): bool

Функция разбирает 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-разметки злоумышленником.

Список параметров

filename

Путь к HTML-файлу.

options

Побитовое ИЛИ (OR) констант опций libxml.

Возвращаемые значения

Функция возвращает 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();
?>

Смотрите также

  • DOMDocument::loadHTML() - Загрузка HTML из строки
  • DOMDocument::saveHTML() - Сохраняет документ из внутреннего представления в строку, используя форматирование HTML
  • DOMDocument::saveHTMLFile() - Сохраняет документ из внутреннего представления в файл, используя форматирование HTML