Das Extrahieren von Kindern eines Elements ist ein sehr häufiger Operation bei der Durchführung von Webkriechen oder Parsen von HTML -Inhalten. PHP bietet eine Vielzahl von Möglichkeiten, HTML zu verarbeiten, und die Verwendung von Domdocument in Kombination mit Domelement ist eine relativ Standard- und leistungsstarke Methode. Wenn Sie jedoch eine Bibliothek von Drittanbietern wie Simple_html_dom verwenden, kann es bequemer sein, Kinderknoten durch die Funktion von Children () zu erhalten.
Children () ist eine Methode, die in der Bibliothek von Simple_html_dom bereitgestellt wird. Es wird verwendet, um alle untergeordneten Elemente eines HTML -Elements (ohne Textknoten) zu erhalten. Diese Methode gibt eine Reihe von untergeordneten Knoten oder einen untergeordneten Knoten mit einem bestimmten Index zurück.
<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>>Der erste Absatz</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>>Absatz 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>>eins 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>
Sie müssen zunächst die Bibliothek von Github oder der offiziellen Website vorstellen:
<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 kann aus einer Zeichenfolge, einer Datei oder einer URL geladen werden.
<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>Der erste Absatz</p><p>Absatz 2</p><span>eins 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">// 获取第eins id für content von 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">// Holen Sie sich alle Kinder</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>
Die Ausgabe wird sein:
<span><span><span class="hljs-section">p: Der erste Absatz </span></span><span>
</span><span><span class="hljs-section">p: Absatz 2 </span></span><span>
</span><span><span class="hljs-section">span: eins span </span></span><span>
</span></span>
Die Methode Children () kann auch einen Parameter akzeptieren, um die untergeordneten Knoten eines bestimmten Index zu erhalten.
<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">// Ausgabe: p</span></span><span>
</span></span>
Kinder () erhält nur Kinderelementknoten, keine Textknoten oder Kommentare.
Um alle Nachkommenknoten zu durchqueren (nicht nur direkte Kinder), können Sie Find ('*') verwenden.
Stellen Sie bei der Verwendung von Simple_html_dom sicher, dass HTML, das die externe Eingabe behandelt, sicher ist und XSS oder andere Injektionsrisiken vermeidet.
Verwenden Sie die Funktion von Children () , um einfach alle untergeordneten Knoten unter ein bestimmtes HTML -Element zu bringen, was sehr praktisch ist, wenn Sie strukturierte Daten extrahieren müssen. In Kombination mit Simple_html_dom können Sie komplexe HTML -Dokumente schnell analysieren und bedienen, was die Entwicklungseffizienz erheblich verbessert. Für Szenarien, in denen stärkere DOM-Betriebsfunktionen erforderlich sind, wird empfohlen, die integrierte Domdocument- Klasse in PHP zu verstehen, die mehr Kontrolle und Flexibilität bietet.
Verwandte Tags:
HTML