「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP の DOMDocument を使用してノードを抽出するときに HTML タグを保持するにはどうすればよいですか?

PHP の DOMDocument を使用してノードを抽出するときに HTML タグを保持するにはどうすればよいですか?

2024 年 12 月 22 日に公開
ブラウズ:871

How Can I Preserve HTML Tags When Extracting Nodes Using PHP's DOMDocument?

DOMDocument を使用した HTML ノードの抽出に関する問題

はじめに

PHP クラスの DOMDocument は、解析に便利なアプローチを提供しますHTML ドキュメントの操作。ただし、コンテンツを抽出するときに HTML タグを保持しようとすると、問題が発生する可能性があります。この記事では、DOM の基礎となる概念を詳しく掘り下げ、この課題に対処するソリューションを提案します。

DOM とノードについて

DOMDocument は、HTML ドキュメントをノードの階層ツリーとして表します。各ノードは子ノードを持つことができ、複雑な構造を形成します。 HTML 要素は、その属性やテキスト コンテンツとともに、すべて DOMDocument 内のノードとして表現されることを認識することが重要です。

タグ保持の問題の解決

提供されているコードは、「showContent」ID を持つ DIV ノードを正常にフェッチします。ただし、HTML タグ自体を除く、DIV 内のテキスト コンテンツのみが取得されます。これは、コードが実際のノードではなくテキストのみを抽出する $tag->nodeValue を使用しているためです。

解決策: ノードの走査

] HTML ノードを保持するには、ターゲット ノードの子ノードをトラバースする必要があります。以下のコードは、このアプローチを示しています。

$dom = new DOMDocument();
@$dom->loadHTML($html);

$xpath = new DOMXPath($dom);

$tags = $xpath->query('.//div[@id="showContent"]');
foreach ($tags as $tag) {
    echo $dom->saveXML($tag);
    echo '
'; }

HTML からの特定の情報の取得

表からのリンクなど、HTML ドキュメントから特定の情報が必要な場合は、XPath クエリを変更して、適切なノード。例:

foreach ($div->getElementsByTagName('a') as $link) {
    echo $dom->saveXML($link);
}

追加リソース

DOMDocument の操作に関する詳細については、次のリソースを参照してください:

  • [DOMDocument ドキュメント](https ://www.php.net/manual/en/class.domdocument.php)
  • [スタック内の DOMDocument に関する質問と回答オーバーフロー](https://stackoverflow.com/search?q=user:208809 DOM)
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3