首頁 >後端開發 >php教程 >如何使用 PHP DOM 將具有特定類別的 HTML 元素中的文字提取到平面數組中?

如何使用 PHP DOM 將具有特定類別的 HTML 元素中的文字提取到平面數組中?

DDD
DDD原創
2024-11-15 17:18:03959瀏覽

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

使用PHP DOM 從具有指定類別的元素中提取平面文字

從特定HTML 元素中提取文字是Web 開發中的常見任務。 PHP DOM 提供了強大的工具來解析 HTML 並存取其內容。本文解決了從具有指定類別的元素中提取文字到兩個平面數組中的特定要求。

問題

給定包含分佈在多個p 元素之間的文字的HTML 內容交替類別名,任務是將文字儲存到兩個陣列中:一個用於標題,一個用於內容。例如,給定以下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>

我們需要得到以下輸出:

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

解決方案

要完成此任務使用PHP DOM 進行擷取,我們使用DOMDocument 和DOMXPath。此解決方案涉及以下步驟:

  1. 將HTML 載入到DOMDocument 物件中:
$dom = new DOMDocument();
$dom->loadHTML($test);
  1. 建立DOMXPath 物件來執行XPath
$xpath = new DOMXPath($dom);
建立DOMXPath 物件來執行XPath:
$heading = parseToArray($xpath, 'Heading1-H');
$content = parseToArray($xpath, 'Normal-H');
使用parseToArray() 函數從具有指定類別的元素中提取文字:

  • 在 parseToArray() 函數中:
  • 它對指定類別執行 XPath 查詢。
  • 迭代匹配的節點並提取其文字內容。

將擷取的文字儲存在陣列中,該陣列傳回。

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

這是完整的PHP 程式碼:

這種方法利用PHP DOM 和XPath 的強大功能來有效地從HTML 文件中提取文本,從而允許更複雜和更複雜的內容。有針對性的內容操縱。

以上是如何使用 PHP DOM 將具有特定類別的 HTML 元素中的文字提取到平面數組中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn