使用 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);
$heading = parseToArray($xpath, 'Heading1-H'); $content = parseToArray($xpath, 'Normal-H');
在 parseToArray() 函数中:
这里是完整的 PHP 代码:
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 DOM 和 XPath 的强大功能来有效地从 HTML 文档中提取文本,从而允许进行更复杂和更有针对性的内容操作。
以上是如何使用 PHP DOM 将具有特定类的 HTML 元素中的文本提取到平面数组中?的详细内容。更多信息请关注PHP中文网其他相关文章!