ホームページ > バックエンド開発 > PHPチュートリアル > PHP の DOMDocument を使用してノードを抽出するときに HTML タグを保持するにはどうすればよいですか?

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

Linda Hamilton
リリース: 2024-12-08 03:44:09
オリジナル
809 人が閲覧しました

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 '<br>';
}
ログイン後にコピー

HTML から特定の情報を取得する

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

foreach ($div->getElementsByTagName('a') as $link) {
    echo $dom->saveXML($link);
}
ログイン後にコピー

追加リソース

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

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

以上がPHP の DOMDocument を使用してノードを抽出するときに HTML タグを保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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