ホームページ > バックエンド開発 > PHPチュートリアル > ブロックレベルの要素を失わずに DOMDocument から HTML を保存する方法

ブロックレベルの要素を失わずに DOMDocument から HTML を保存する方法

Patricia Arquette
リリース: 2024-12-18 10:11:17
オリジナル
828 人が閲覧しました

How to Save HTML from a DOMDocument Without Losing Block-Level Elements?

ブロックレベル要素を省略せずに DOMDocument の HTML を保存する方法

DOMDocument のコンテンツを HTML として保存しようとすると問題が発生しますデフォルトの HTML、本文、および p タグのラッパーは含めません。 saveXML($d->getElementsByTagName('p')->item(0)) を使用する提案された解決策は、コンテンツにブロックレベルの要素が欠如している場合にのみ機能します。

オリジナルのアプローチ

h1 タグなどのブロックレベルの要素が存在する場合、saveXML からの出力は次のようになります。切り詰められ、p タグ内のテキストのみが残ります。

更新されたアプローチ

この問題を解決するには、PHP で導入されたloadHTML 関数の更新バージョンを利用できます。 5.4 および Libxml 2.6。この関数には、コンテンツの解析方法を指定できる $options パラメーターが含まれています。次のオプションを設定すると、

$html->loadHTML($content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
ログイン後にコピー

オプションの説明

  • LIBXML_HTML_NOIMPLIED は、暗黙の html/body 要素の自動追加を無効にします。
  • LIBXML_HTML_NODEFDTD はデフォルトの doctype を防止します

その後 saveHTML() を実行すると、出力には doctype、html タグ、または body タグが含まれません。このアプローチにより、ブロックレベルの要素が出力に確実に保持されます。

注:

  • Libxml 2.6 のドキュメントには、Libxml 2.6 が必要であると記載されていますが、LIBXML_HTML_NODEFDTD Libxml でのみ使用可能です2.7.8.
  • LIBXML_HTML_NOIMPLIED は Libxml 2.7.7.
で利用可能です

以上がブロックレベルの要素を失わずに DOMDocument から HTML を保存する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート