この質問は、DOMDocument を操作する際の一般的な問題、つまり、囲んでいる HTML、本文、および段落タグなしで HTML コンテンツを抽出する問題に対処します。問題は、saveXML() がこれらのラッパーを出力に追加するときに発生します。最初の段落要素で saveXML() を使用する提案された修正は、ブロックレベル要素のないコンテンツに対してのみ機能しますが、この記事では包括的な解決策を検討します。
この問題を解決する鍵は、$option の導入にあります。 PHP 5.4およびLibxml 2.6のloadHTML()のパラメータ。次のオプションを利用することで、
$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
暗黙の HTML 要素と body 要素、またはデフォルトの doctype を自動的に追加しないように Libxml に指示できます。その結果、saveHTML() はこれらのラッパーなしでコンテンツを出力します。
LIBXML_HTML_NOIMPLIED は、暗黙の HTML/body 要素の自動追加をオフにしますが、LIBXML_HTML_NODEFDTD は、入力にデフォルトの doctype が見つからない場合にデフォルトの doctype が追加されるのを防ぎます。
これらのオプションを組み込むことで、不要なラッパーを使用せずに目的の HTML コンテンツを効果的に抽出でき、 DOMDocument のコンテンツをより正確に表現します。
loadHTML() には Libxml 2.6 が必要ですが、LIBXML_HTML_NODEFDTD は Libxml 2.7.8 でのみ使用可能であり、LIBXML_HTML_NOIMPLIED は Libxml 2.7.7 で使用できることに注意することが重要です。 Libxml パラメータの包括的な理解については、公式ドキュメントを参照してください。
以上がラッパータグなしで DOMDocument から HTML を保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。