(PHP 5, PHP 7, PHP 8)
DOMDocument::loadHTMLFile — ファイルから HTML を読み込む
この関数は、filename
という名前のファイルから 読み込んだ HTML ドキュメントをパースします。 XML を読み込む場合とは異なり、妥当な HTML でなくても 読み込むことができます。
この関数は、HTML4 のパーサを使って入力をパースします。モダンなWebブラウザが採用している HTML5 のパースルールとは異なります。入力によっては、このことが原因で異なるDOM構造になるかもしれません。よって、この関数はHTMLを無害化する目的で安全に使えません。
例を挙げましょう。HTML要素によっては、暗黙のうちに親の要素を閉じるものがあります。親要素を自動で閉じるルールは、HTML4 と HTML5 で異なります。よって、DOMDocument が表す DOM 構造は Webブラウザ上のそれと異なる可能性があります。このことから、攻撃者がHTMLを壊す攻撃を許す可能性があります。
filename
HTML ファイルへのパス。
options
追加の Libxml パラメータ を、ビット演算子の OR
で指定します。
空の文字列を filename
に渡したり中身が空のファイルを指定したりすると、警告が発生します。 この警告は libxml が発するものではないので、libxml のエラー処理関数 では処理できません。
壊れた HTML も読み込めますが、マークアップが正しくない場合には E_WARNING
が発生します。 このエラーの処理には libxml のエラー処理関数 が使えます。
バージョン | 説明 |
---|---|
8.3.0 | この関数の仮の戻り値の型が、bool になりました。+ |
8.0.0 | この関数を static メソッドとしてコールすると、 Error がスローされるようになりました。 これより前のバージョンでは、 E_DEPRECATED が発生していました。 |
例1 ドキュメントを作成する
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile("filename.html");
echo $doc->saveHTML();
?>