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

DDD
Freigeben: 2024-11-15 17:18:03
Original
870 Leute haben es durchsucht

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

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

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);
Nach dem Login kopieren
  1. Erstellen Sie ein DOMXPath-Objekt, um XPaths auszuführen:
$xpath = new DOMXPath($dom);
Nach dem Login kopieren
  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');
Nach dem Login kopieren

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

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!

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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage