使用简单html dom解析html的逻辑

时间:2018-08-07 07:13:14

标签: simple-html-dom

我很难用simple html dom来解析结构

`<div class="class1">class</div>
`<div class="class2">data2</div>
`<div class="class2">data3</div>

`<div class="class1">text</div>
`<div class="class2">...</div>

由于结构不是嵌套的,所以我很难解析它。 我希望数据库以class1作为主标题,而class2作为子标题。因此,对于每个class1,我想读取所有class2标签,直到另一个class1到达。希望有道理。

1 个答案:

答案 0 :(得分:0)

您可以检查类元素以查看是否达到了另一个class1元素。这样的东西解释了一般的想法:

$str =<<<'html'

<div class="class1">class</div>
<div class="class2">data2</div>
<div class="class2">data3</div>

<div class="class1">text</div>
<div class="class2">...</div>
html;

$html = str_get_html($str);
// Store all results in a multi dimensional array
$result = [];

$group = -1;
foreach ($html->find('div') as $elem) {
    // if element class is class1, create a new array to gather data
    if($elem->class == 'class1') {
        $group++;
        $result[$group] = [];
    }
    $result[$group][] = $elem->plaintext;
}

print_r($result);

因此,每次遇到class1的新元素时,我们就开始在新数组中收集信息,因此最终结果是一个嵌套数组,它按照您描述的方式对元素进行分组。