Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh mengekstrak dan mengkategorikan data teks daripada dokumen HTML berdasarkan kelas elemen tertentu menggunakan PHP?

Bagaimanakah saya boleh mengekstrak dan mengkategorikan data teks daripada dokumen HTML berdasarkan kelas elemen tertentu menggunakan PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-12 15:48:01566semak imbas

How can I extract and categorize text data from an HTML document based on specific element classes using PHP?

Dapatkan Teks daripada Elemen dengan Kelas Tertentu sebagai Tatasusunan Komprehensif

Dalam pertanyaan ini, tugas di tangan adalah untuk mengekstrak dan mengkategorikan data teks daripada dokumen HTML berdasarkan kelas elemen tertentu. Dokumen HTML mengandungi pelbagai perenggan dengan kelas seperti "Heading1-P" dan "Normal-P," setiap satu mengandungi tajuk dan kandungan yang sepadan.

Untuk mencapainya, kami boleh menggunakan Dokumen DOM PHP dan XPath. Proses ini melibatkan menghuraikan dokumen HTML dan melintasi elemennya menggunakan XPath. Kami mentakrifkan fungsi tersuai, parseToArray() yang mengambil objek XPath dan nama kelas sebagai input. Fungsi ini berulang melalui elemen yang sepadan dengan kelas dan mengekstrak kandungan teksnya ke dalam tatasusunan.

Berikut ialah penyelesaian terperinci:

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

Fungsi parseToArray() mengenal pasti elemen berdasarkan kelas tertentu menamakan dan mengekstrak kandungan teks mereka ke dalam tatasusunan. Selepas itu, dua tatasusunan dicipta: $heading dan $content, yang masing-masing mengandungi tajuk bab dan teks perenggan yang sepadan. Output kod adalah seperti berikut:

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

Dengan menggunakan pendekatan ini, anda boleh mendapatkan semula dan memisahkan kandungan teks dengan cekap berdasarkan nama kelas tertentu daripada dokumen HTML, membolehkan pemprosesan data yang fleksibel dan disasarkan.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak dan mengkategorikan data teks daripada dokumen HTML berdasarkan kelas elemen tertentu menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn