DOMDocument::loadHTML

(PHP 5, PHP 7, PHP 8)

DOMDocument::loadHTML Load HTML from a string

Опис

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

The function parses the HTML contained in the string source. Unlike loading XML, HTML does not have to be well-formed to load.

Увага

Ця функція аналізує вхідні дані за допомогою парсера HTML 4. Правила аналізу HTML 5, які використовують більш сучасні браузери — інакші. Залежно від вхідних даних, DOM-структура може бути зміненою у результаті. Отже, ця функція не придатна для безпечного очищення HTML-коду.

Повідінка функції під час парсину HTML може залежати від версії libxml, що використовується та частково від граничних випадків і обробки помилок. Для парсингу згідно стандарту HTML 5 використовується метод Dom\HTMLDocument::createFromString() або Dom\HTMLDocument::createFromFile(), починаючи з PHP 8.4.

До прикладу, деякі елементи HTML неявно закривають батьківський елемент одразу після себе. Правила автоматичного закривання батьківських елементів в HTML 4 та HTML 5 відрізняються, і тому клас DOMDocument може бачити DOM-структури, що відрізняються від тих, що бачить браузер, дозволяючи зловмиснику поламати вихідний HTML-код.

Параметри

source

The HTML string.

options

Побітове АБО констант опцій libxml.

Значення, що повертаються

Повертає true у разі успіху або false в разі помилки.

Помилки/виключення

If an empty string is passed as the source, a warning will be generated. This warning is not generated by libxml and cannot be handled using libxml's error handling functions.

Хоча неправильний HTML має успішно завантажитися, ця функція може генерувати E_WARNING, виявивши неправильну розмітку. Функції обробки помилок libxml можна використовувати для обробки цих помилок.

Журнал змін

Версія Опис
8.3.0 This function now has a tentative bool return type.
8.0.0 Calling this function statically will now throw an Error. Previously, an E_DEPRECATED was raised.

Приклади

Приклад #1 Creating a Document

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

Прогляньте також