文字列から HTML を読み込む

# DOMDocument::loadHTML

(PHP 5, PHP 7, PHP 8)

DOMDocument::loadHTML — 文字列から HTML を読み込む

### 説明

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

この関数は、文字列 `source` に含まれる HTML を パースします。XML を読み込む場合とは異なり、妥当な HTML でなくても 読み込むことができます。

警告

モダンな HTML をパースしたり処理したりするには、DOMDocument の代わりに Dom\HTMLDocument を使ってください。

この関数は、HTML4 のパーサーを使って入力をパースします。モダンなWebブラウザが採用している HTML5 のパースルールとは異なります。入力によっては、このことが原因で異なるDOM構造になるかもしれません。よって、この関数はHTMLを無害化する目的で安全に使えません。

HTML をパースする挙動は、利用している `libxml` のバージョンに依存します。 特にエッジケースやエラーハンドリングについてそれが当てはまります。 HTML5 に準拠したパースを行うには、PHP 8.4 で追加される Dom\HTMLDocument::createFromString() や Dom\HTMLDocument::createFromFile() を使いましょう。

例を挙げましょう。HTML要素によっては、暗黙のうちに親の要素を閉じるものがあります。親要素を自動で閉じるルールは、HTML4 と HTML5 で異なります。よって、DOMDocument が表す DOM 構造は Webブラウザ上のそれと異なる可能性があります。このことから、攻撃者がHTMLを壊す攻撃を許す可能性があります。

### パラメータ

`source`

  HTML 文字列。

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

### 戻り値

成功した場合に `true` を、失敗した場合に `false` を返します。

### エラー / 例外

空の文字列を `source` に渡すと、警告が発生します。 この警告は libxml が発するものではないので、libxml のエラー処理関数では処理できません。

壊れた HTML も読み込めますが、マークアップが正しくない場合には `E_WARNING` が発生します。 このエラーの処理には libxml のエラー処理関数 が使えます。

### 変更履歴

バージョン | 説明
--- | ---
8.3.0 | この関数の仮の戻り値の型が、bool になりました。
8.0.0 | この関数を static メソッドとしてコールすると、 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