Heim >Backend-Entwicklung >PHP-Tutorial >Wie extrahiere ich mit PHP DOM Text aus HTML-Elementen mit bestimmten Klassen in flache Arrays?

Wie extrahiere ich mit PHP DOM Text aus HTML-Elementen mit bestimmten Klassen in flache Arrays?

DDD
DDDOriginal
2024-11-15 17:18:03956Durchsuche

How to Extract Text from HTML Elements with Specific Classes into Flat Arrays using PHP DOM?

Flachen Text aus Elementen mit einer bestimmten Klasse mithilfe von PHP DOM extrahieren

Das Extrahieren von Text aus bestimmten HTML-Elementen ist eine häufige Aufgabe in der Webentwicklung. PHP DOM bietet robuste Tools zum Parsen von HTML und zum Zugriff auf dessen Inhalte. Dieser Artikel befasst sich mit einer spezifischen Anforderung zum Extrahieren von Text aus Elementen mit einer nominierten Klasse in zwei flache Arrays.

Problem

Gegebener HTML-Inhalt, der Text enthält, der auf mehrere p-Elemente verteilt ist Bei abwechselnden Klassennamen besteht die Aufgabe darin, den Text in zwei Arrays zu speichern: eines für Überschriften und eines für den Inhalt. Zum Beispiel mit dem folgenden HTML-Code:

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

Wir müssen die folgende Ausgabe erhalten:

$heading = ['Chapter 1', 'Chapter 2', 'Chapter 3'];
$content = ['This is chapter 1', 'This is chapter 2', 'This is chapter 3'];

Lösung

Um dies zu erreichen Für die Extraktion mit PHP DOM verwenden wir DOMDocument und DOMXPath. Die Lösung umfasst die folgenden Schritte:

  1. Laden Sie den HTML-Code in ein DOMDocument-Objekt:
$dom = new DOMDocument();
$dom->loadHTML($test);
  1. Erstellen Sie ein DOMXPath-Objekt, um XPaths auszuführen:
$xpath = new DOMXPath($dom);
  1. Verwenden Sie die Funktion parseToArray(), um Text aus Elementen mit der angegebenen Klasse zu extrahieren:
$heading = parseToArray($xpath, 'Heading1-H');
$content = parseToArray($xpath, 'Normal-H');

In der Funktion parseToArray():

  • Es führt eine XPath-Abfrage für die angegebene Klasse durch.
  • Durchläuft die übereinstimmenden Knoten und extrahiert deren Textinhalt.
  • Speichert den extrahierten Text in einem Array, das zurückgegeben wird.

Hier ist der vollständige PHP-Code:

query($xpathquery);

    $resultarray = [];
    foreach ($elements as $element) {
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
            $resultarray[] = $node->nodeValue;
        }
    }

    return $resultarray;
}

$test = <<
    Chapter 2

This is chapter 2

Chapter 3

This is chapter 3

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 "
"; var_dump($content); echo "
";

Dieser Ansatz nutzt die Leistungsfähigkeit von PHP DOM und XPath, um effizient Text aus HTML-Dokumenten zu extrahieren und so eine komplexere und gezieltere Inhaltsbearbeitung zu ermöglichen.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich mit PHP DOM Text aus HTML-Elementen mit bestimmten Klassen in flache Arrays?. 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