要素の子供を抽出することは、HTMLコンテンツをraw索したり解析したりするときに非常に一般的な操作です。 PHPは、HTMLを処理するさまざまな方法を提供し、 DomdocumentとDomelementを組み合わせて使用することは、比較的標準的で強力な方法です。ただし、 simple_html_domのようなサードパーティライブラリを使用している場合、子供()機能を介して子ノードを取得する方が便利です。
Children()は、 simple_html_domライブラリで提供される方法です。これは、HTML要素のすべての子要素を取得するために使用されます(テキストノードを除く)。この方法は、特定のインデックスを持つ子ノードまたは子ノードの配列を返します。
<span><span><span class="hljs-tag"><<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>>
</span><span><span class="hljs-tag"><<span class="hljs-name">p</span></span></span><span>>最初の段落</span><span><span class="hljs-tag"></<span class="hljs-name">p</span></span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">p</span></span></span><span>>パラグラフ2</span><span><span class="hljs-tag"></<span class="hljs-name">p</span></span></span><span>>
</span><span><span class="hljs-tag"><<span class="hljs-name">span</span></span></span><span>>1つ span</span><span><span class="hljs-tag"></<span class="hljs-name">span</span></span></span><span>>
</span><span><span class="hljs-tag"></<span class="hljs-name">div</span></span></span><span>>
</span></span>
最初に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>
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">'<div id="content"><p>最初の段落</p><p>パラグラフ2</p><span>1つ span</span></div>'</span></span><span>);
</span></span>
<span><span><span class="hljs-variable">$div</span></span><span> = </span><span><span class="hljs-variable">$html</span></span><span>-></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>-></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>->tag . </span><span><span class="hljs-string">': '</span></span><span> . </span><span><span class="hljs-variable">$child</span></span><span>->innertext . </span><span><span class="hljs-string">"<br>"</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>-></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>->tag; </span><span><span class="hljs-comment">// 出力: p</span></span><span>
</span></span>
子供()は、テキストノードやコメントではなく、子要素ノードのみを取得します。
すべての子孫ノード(直接の子供だけでなく)を横断するには、 find( '*')を使用できます。
Simple_html_domを使用する場合、外部入力を処理するHTMLが安全でXSSまたはその他の注入リスクを回避することを確認してください。
子供()関数を使用して、特定のHTML要素の下ですべての子ノードを簡単に取得します。これは、構造化されたデータを抽出する必要がある場合に非常に実用的です。 Simple_html_domと組み合わせることで、複雑なHTMLドキュメントをすばやく解析および操作し、開発効率を大幅に改善できます。より強力なDOM操作機能が必要なシナリオの場合、PHPに組み込まれたDomdocumentクラスを理解することをお勧めします。
関連タグ:
HTML