使用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。此解決方案涉及以下步驟:
$dom = new DOMDocument(); $dom->loadHTML($test);
$xpath = new DOMXPath($dom);建立DOMXPath 物件來執行XPath:
$heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H');使用parseToArray() 函數從具有指定類別的元素中提取文字:
將擷取的文字儲存在陣列中,該陣列傳回。
query($xpathquery); $resultarray = []; foreach ($elements as $element) { $nodes = $element->childNodes; foreach ($nodes as $node) { $resultarray[] = $node->nodeValue; } } return $resultarray; } $test = << Chapter 2This 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中文網其他相關文章!