Wie kann ich mit PHP Text aus bestimmten HTML-Elementen mit unterschiedlichen Klassen in separate Arrays extrahieren?

Patricia Arquette
Freigeben: 2024-11-21 12:01:10
Original
917 Leute haben es durchsucht

How can I extract text from specific HTML elements with different classes into separate arrays using PHP?

Text aus bestimmten HTML-Elementen in Arrays extrahieren

Problem:

Sie besitzen HTML-Inhalt mit Elementen, die sowohl Überschriften als auch enthalten normaler Text. Ihr Ziel besteht darin, den Text aus Elementen mit einer bestimmten Klasse („Heading1-H“ für Überschriften, „Normal-H“ für Text) in zwei separate Arrays zu extrahieren: $heading und $content.

Lösung:

Verwendung von PHP DOM und XPath

PHP DOM (Document Object Model) und XPath (XML Path Language) bieten eine robuste Lösung für diese Aufgabe. Hier ist die Implementierung:

$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

Ausgabe:

array(3) {
  [0] => string(8) "Chapter 1"
  [1] => string(8) "Chapter 2"
  [2] => string(8) "Chapter 3"
}
<br/>
array(3) {
  [0] => string(15) "This is chapter 1"
  [1] => string(15) "This is chapter 2"
  [2] => string(15) "This is chapter 3"
}
<br/>
Nach dem Login kopieren

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