Text aus Elementen mit angegebener Klasse als umfassendes Array abrufen
Bei dieser Abfrage besteht die Aufgabe darin, Textdaten zu extrahieren und zu kategorisieren aus einem HTML-Dokument basierend auf bestimmten Elementklassen. Das HTML-Dokument enthält verschiedene Absätze mit Klassen wie „Heading1-P“ und „Normal-P“, die jeweils entsprechende Überschriften und Inhalte enthalten.
Um dies zu erreichen, können wir PHP DOM Document und XPath verwenden. Der Prozess umfasst das Parsen des HTML-Dokuments und das Durchlaufen seiner Elemente mithilfe von XPath. Wir definieren eine benutzerdefinierte Funktion, parseToArray(), die ein XPath-Objekt und einen Klassennamen als Eingaben verwendet. Diese Funktion durchläuft die zur Klasse passenden Elemente und extrahiert deren Textinhalt in ein Array.
Hier ist die detaillierte Lösung:
$test = <<< HTML <p class="Heading1-P"> <span class="Heading1-H">Chapter 1</span> </p> <p class="Normal-P"> <span class="Normal-H">This is chapter 1</span> </p> <p class="Heading1-P"> <span class="Heading1-H">Chapter 2</span> </p> <p class="Normal-P"> <span class="Normal-H">This is chapter 2</span> </p> <p class="Heading1-P"> <span class="Heading1-H">Chapter 3</span> </p> <p class="Normal-P"> <span class="Normal-H">This is chapter 3</span> </p> HTML; $dom = new DOMDocument(); $dom->loadHTML($test); $xpath = new DOMXPath($dom); $heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H'); var_dump($heading); echo "<br/>"; var_dump($content); echo "<br/>"; function parseToArray(DOMXPath $xpath, string $class): array { $xpathquery = "//[@class='$class']"; $elements = $xpath->query($xpathquery); $resultarray = []; foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { $resultarray[] = $node->nodeValue; } } return $resultarray; }
Die Funktion parseToArray() identifiziert Elemente basierend auf einer bestimmten Klasse benennen und extrahieren ihren Textinhalt in ein Array. Anschließend werden zwei Arrays erstellt: $heading und $content, die jeweils die Kapiteltitel und den entsprechenden Absatztext enthalten. Die Ausgabe des Codes sieht wie folgt aus:
array(3) { [0] => string(8) "Chapter 1" [1] => string(8) "Chapter 2" [2] => string(8) "Chapter 3" } array(3) { [0] => string(16) "This is chapter 1" [1] => string(16) "This is chapter 2" [2] => string(16) "This is chapter 3" }
Mit diesem Ansatz können Sie Textinhalte basierend auf bestimmten Klassennamen effizient aus einem HTML-Dokument abrufen und trennen, was eine flexible und gezielte Datenverarbeitung ermöglicht.
Das obige ist der detaillierte Inhalt vonWie kann ich mit PHP Textdaten aus einem HTML-Dokument basierend auf bestimmten Elementklassen extrahieren und kategorisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!