PHP 8.5.0 Beta 2 available for testing

Dom\HTMLDocument::createFromString

(PHP 8 >= 8.4.0)

Dom\HTMLDocument::createFromStringParses an HTML document from a string

説明

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

Parses an HTML document from a string, according to the living standard.

パラメータ

source
The string containing the HTML to parse.
options

追加の Libxml パラメータ を、ビット演算子の OR で指定します。

Dom\HTML_NO_DEFAULT_NS を渡すことで、 HTML 名前空間や template 要素の使用を無効化することもできます。 このオプションは、及ぼす影響を十分理解している場合に限り使用すべきです。
overrideEncoding
ドキュメントが作成されたエンコーディング。 指定されていない場合、最も使用されている可能性の高いエンコーディングを判定しようとします。

戻り値

The parsed document as an Dom\HTMLDocument instance.

エラー / 例外

  • options が不正なオプションを含む場合、 ValueError をスローします。
  • overrideEncoding が未知のエンコーディングである場合、 ValueError をスローします。

例1 Dom\HTMLDocument::createFromString() example

Parses a sample document.

<?php
$dom
= Dom\HTMLDocument::createFromString(<<<'HTML'
<!DOCTYPE html>
<html>
<body>
<p>Hello, world!</p>
</body>
</html>
HTML);
echo
$dom->saveHtml();
?>

上の例の出力は以下となります。

<!DOCTYPE html><html><head></head><body>
    <p>Hello, world!</p>

</body></html>

注意

注意: html タグや head タグの中の空白は 必ずしも保持されません。インデント等が失われる可能性があります。

参考

add a note

User Contributed Notes 1 note

up
1
kawewong at gmail dot com
7 months 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);
?>
To Top