Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich mit PHP Textdaten aus einem HTML-Dokument basierend auf bestimmten Elementklassen extrahieren und kategorisieren?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-12 15:48:01651Durchsuche

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;
}

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!

Stellungnahme:
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