Загрузка HTML из строки

# DOMDocument::loadHTML

(PHP 5, PHP 7, PHP 8)

DOMDocument::loadHTML — Загрузка HTML из строки

### Описание

public function DOMDocument::loadHTML(string `$source`, int `$options` = 0): bool

Функция разбирает HTML, содержащийся в строке `source`. В отличие от загрузки 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-разметки злоумышленником.

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

`source`

  HTML-строка.

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

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

Функция возвращает `true`, если выполнилась успешно, или `false`, если возникла ошибка.

### Ошибки

Если через аргумент `source` передана пустая строка, будет сгенерировано предупреждение. Это предупреждение генерируется не libxml, поэтому оно не может быть обработано функциями обработки ошибок libxml.

Несмотря на то что некорректная HTML-разметка обычно успешно загружается, эта функция иногда генерирует ошибки уровня `E_WARNING` при обнаружении плохой разметки. Для обработки таких ошибок пользуются функциями обработки ошибок модуля libxml.

### Список изменений

Версия | Описание
--- | ---
8.3.0 | Теперь функция имеет предварительный логический (bool) тип возвращаемого значения.
8.0.0 | При статическом вызове функции теперь будет выбрасываться ошибка Error. Ранее выдавалась ошибка уровня `E_DEPRECATED`.

### Примеры

Пример #1 Создание документа

    <?php
    $doc = new DOMDocument();
    $doc->loadHTML("<html><body>Test<br></body></html>");
    echo $doc->saveHTML();
    ?>

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

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open