我很难用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
到达。希望有道理。
答案 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
的新元素时,我们就开始在新数组中收集信息,因此最终结果是一个嵌套数组,它按照您描述的方式对元素进行分组。