如何使用 PHP 根据特定元素类从 HTML 文档中提取文本数据并对其进行分类?

Mary-Kate Olsen
发布: 2024-11-12 15:48:01
原创
566 人浏览过

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

从指定类的元素中检索文本作为综合数组

在此查询中,当前的任务是提取文本数据并对其进行分类来自基于特定元素类的 HTML 文档。 HTML 文档包含各种段落,其中包含“Heading1-P”和“Normal-P”等类,每个段落都包含相应的标题和内容。

为了实现此目的,我们可以利用 PHP DOM 文档和 XPath。该过程涉及解析 HTML 文档并使用 XPath 遍历其元素。我们定义一个自定义函数 parseToArray(),它将 XPath 对象和类名作为输入。该函数遍历与类匹配的元素,并将其文本内容提取到数组中。

详细解决方案如下:

$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;
}
登录后复制

函数 parseToArray() 根据特定类识别元素名称并将其文本内容提取到数组中。随后,创建两个数组:$heading 和$content,分别包含章节标题和相应的段落文本。代码的输出如下:

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"
}
登录后复制

通过采用这种方法,您可以根据特定的类名从 HTML 文档中高效地检索和分离文本内容,从而实现灵活且有针对性的数据处理。

以上是如何使用 PHP 根据特定元素类从 HTML 文档中提取文本数据并对其进行分类?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板