現在の位置: ホーム> 最新記事一覧> PHPで子供の機能を使用してHTML DOM要素の子供を抽出する方法は?

PHPで子供の機能を使用してHTML DOM要素の子供を抽出する方法は?

M66 2025-08-11

要素の子供を抽出することは、HTMLコンテンツをraw索したり解析したりするときに非常に一般的な操作です。 PHPは、HTMLを処理するさまざまな方法を提供し、 DomdocumentDomelementを組み合わせて使用することは、比較的標準的で強力な方法です。ただし、 simple_html_domのようなサードパーティライブラリを使用している場合、子供()機能を介して子ノードを取得する方が便利です。

子供()の機能とは何ですか?

Children()は、 simple_html_domライブラリで提供される方法です。これは、HTML要素のすべての子要素を取得するために使用されます(テキストノードを除く)。この方法は、特定のインデックスを持つ子ノードまたは子ノードの配列を返します。

サンプルHTML

 <span><span><span class="hljs-tag">&lt;<span class="hljs-name">div</span></span></span><span> </span><span><span class="hljs-attr">id</span></span><span>=</span><span><span class="hljs-string">"content"</span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">p</span></span></span><span>&gt;最初の段落</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">p</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">p</span></span></span><span>&gt;パラグラフ2</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">p</span></span></span><span>&gt;
    </span><span><span class="hljs-tag">&lt;<span class="hljs-name">span</span></span></span><span>&gt;1つ span</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">span</span></span></span><span>&gt;
</span><span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span></span></span><span>&gt;
</span></span>

子供()を使用して子供のノードを抽出する方法は?

ステップ1: simple_html_domを紹介します

最初にGithubまたはその公式Webサイトからライブラリを紹介する必要があります。

 <span><span><span class="hljs-keyword">include</span></span><span>(</span><span><span class="hljs-string">'simple_html_dom.php'</span></span><span>);
</span></span>

ステップ2:HTMLをロードします

HTMLは、文字列、ファイル、またはURLからロードできます。

 <span><span><span class="hljs-variable">$html</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_get_html</span></span><span>(</span><span><span class="hljs-string">'&lt;div id="content"&gt;&lt;p&gt;最初の段落&lt;/p&gt;&lt;p&gt;パラグラフ2&lt;/p&gt;&lt;span&gt;1つ span&lt;/span&gt;&lt;/div&gt;'</span></span><span>);
</span></span>

ステップ3:ターゲット要素を選択し、子供を使用します()

 <span><span><span class="hljs-variable">$div</span></span><span> = </span><span><span class="hljs-variable">$html</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">find</span></span><span>(</span><span><span class="hljs-string">'div#content'</span></span><span>, </span><span><span class="hljs-number">0</span></span><span>); </span><span><span class="hljs-comment">// 获取第1つ id のために content の div</span></span><span>
</span><span><span class="hljs-variable">$children</span></span><span> = </span><span><span class="hljs-variable">$div</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">children</span></span><span>();         </span><span><span class="hljs-comment">// すべての子供を取得します</span></span><span>

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$children</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$child</span></span><span>) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$child</span></span><span>-&gt;tag . </span><span><span class="hljs-string">': '</span></span><span> . </span><span><span class="hljs-variable">$child</span></span><span>-&gt;innertext . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
}
</span></span>

出力は次のとおりです。

 <span><span><span class="hljs-section">p: 最初の段落  </span></span><span>
</span><span><span class="hljs-section">p: パラグラフ2  </span></span><span>
</span><span><span class="hljs-section">span: 1つ span  </span></span><span>
</span></span>

指定されたインデックスの子ノードを取得します

子供()メソッドは、特定のインデックスの子ノードを取得するパラメーターを受け入れることもできます。

 <span><span><span class="hljs-variable">$firstChild</span></span><span> = </span><span><span class="hljs-variable">$div</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">children</span></span><span>(</span><span><span class="hljs-number">0</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$firstChild</span></span><span>-&gt;tag; </span><span><span class="hljs-comment">// 出力: p</span></span><span>
</span></span>

注意すべきこと

  1. 子供()は、テキストノードやコメントではなく、子要素ノードのみを取得します。

  2. すべての子孫ノード(直接の子供だけでなく)を横断するには、 find( '*')を使用できます。

  3. Simple_html_domを使用する場合、外部入力を処理するHTMLが安全でXSSまたはその他の注入リスクを回避することを確認してください。

要約します

子供()関数を使用して、特定のHTML要素の下ですべての子ノードを簡単に取得します。これは、構造化されたデータを抽出する必要がある場合に非常に実用的です。 Simple_html_domと組み合わせることで、複雑なHTMLドキュメントをすばやく解析および操作し、開発効率を大幅に改善できます。より強力なDOM操作機能が必要なシナリオの場合、PHPに組み込まれたDomdocumentクラスを理解することをお勧めします。

  • 関連タグ:

    HTML