Dom\HTMLDocument::createFromString

(PHP 8 >= 8.4.0)

Dom\HTMLDocument::createFromString β€” Π Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ содСрТимоС строки ΠΊΠ°ΠΊ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚

ОписаниС

public static function Dom\HTMLDocument::createFromString(string $source, int $options = 0, ?string $overrideEncoding = null): Dom\HTMLDocument

Π Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈΠ· строки Π² соотвСтствии со стандартом.

Бписок ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

source
Π‘Ρ‚Ρ€ΠΎΠΊΠ° с HTML-Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ для Ρ€Π°Π·Π±ΠΎΡ€Π°.
options
ΠŸΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠ΅ Π˜Π›Π˜ (OR) констант ΠΎΠΏΡ†ΠΈΠΉ libxml. Π Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ константу Dom\HTML_NO_DEFAULT_NS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ пространства ΠΈΠΌΡ‘Π½ HTML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ элСмСнта шаблона. ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ΠΉ константы Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ послСдствия этого понятны.
overrideEncoding
ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ создали Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚. ΠœΠ΅Ρ‚ΠΎΠ΄ попытаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ, Ссли ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π»ΠΈ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Π΅ значСния

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Π½Ρ‹ΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΊΠ°ΠΊ экзСмпляр класса Dom\HTMLDocument.

Ошибки

  • ΠœΠ΅Ρ‚ΠΎΠ΄ выбрасываСт ΠΎΡˆΠΈΠ±ΠΊΡƒ ValueError, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ options содСрТит нСдопустимыС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.
  • ΠœΠ΅Ρ‚ΠΎΠ΄ выбрасываСт ΠΎΡˆΠΈΠ±ΠΊΡƒ ValueError, Ссли Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ overrideEncoding ΠΏΠ΅Ρ€Π΅Π΄Π°Π»ΠΈ Π½Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½ΡƒΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #1 ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Π±ΠΎΡ€Π° строки ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Dom\HTMLDocument::createFromString()

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† строки.

<?php
$dom
= Dom\HTMLDocument::createFromString(<<<'HTML'
<!DOCTYPE html>
<html>
<body>
<p>ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!</p>
</body>
</html>
HTML);
echo
$dom->saveHtml();
?>

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°:

<!DOCTYPE html><html><head></head><body>
    <p>ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!</p>
</body></html>

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ считаСт ΠΏΡ€ΠΎΠ±Π΅Π»ΡŒΠ½Ρ‹Π΅ символы Π² Ρ‚Π΅Π³Π°Ρ… html ΠΈ head сущСствСнными, поэтому ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΈΠ΅ символы Ρ‚Π΅Ρ€ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π‘ΠΌΠΎΡ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 1 note

up
6
kawewong at gmail dot com ΒΆ
1 year ago
To load HTML without doctype, html, body elements use `LIBXML_HTML_NOIMPLIED` flag.

<?php
$html = <<<EOT
<div class="row">
    <div class="col"><h1 id="heading" class="col1-heading">Hello</h1></div>
    <div class="col"><p class="paragraph">Hello world.</p>
</div>
EOT;
$doc = \DOM\HTMLDocument::createFromString($html, LIBXML_HTML_NOIMPLIED);
echo htmlspecialchars($doc->saveHTML(), ENT_QUOTES);
?>