Masalah:
Anda memiliki kandungan HTML dengan elemen yang mengandungi kedua-dua tajuk dan teks biasa. Matlamat anda adalah untuk mengekstrak teks daripada elemen dengan kelas yang ditetapkan ("Heading1-H" untuk tajuk, "Normal-H" untuk teks) ke dalam dua tatasusunan berasingan: $heading dan $content.
Penyelesaian:
Menggunakan PHP DOM dan XPath
PHP DOM (Document Object Model) dan XPath (XML Path Language) menawarkan penyelesaian yang mantap untuk tugas ini. Berikut ialah pelaksanaannya:
$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; }
Output:
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/>
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak teks daripada elemen HTML tertentu dengan kelas yang berbeza ke dalam tatasusunan berasingan menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!