Wie kann ich mit PHP Textdaten aus einem HTML-Dokument basierend auf bestimmten Elementklassen extrahieren und kategorisieren?

Mary-Kate Olsen
Freigeben: 2024-11-12 15:48:01
Original
601 Leute haben es durchsucht

How can I extract and categorize text data from an HTML document based on specific element classes using PHP?

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;
}
Nach dem Login kopieren

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"
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage