我正在尝试使用Simple HTML DOM Parser从具有以下结构的页面中删除一些数据:
<div class='image'>
<img class='a' src='1.jpg'>
</div>
<div class='data'>
lorem ipsum 1
</div>
<div class='data'>
lorem ipsum 2
</div>
<div class='data'>
lorem ipsum 3
</div>
<div class='image'>
<img class='a' src='2.jpg'>
</div>
<div class='data'>
lorem ipsum 4
</div>
<div class='image'>
<img class='a' src='3.jpg'>
</div>
<div class='data'>
lorem ipsum 5
</div>
<div class='data'>
lorem ipsum 6
</div>
我可以轻松获取所有数据。 我的问题是我无法将图像与下面的数据div关联起来。 (Divs没有嵌套)
我需要联想 图像1.jpg与数据1,2和&amp; 3 图像2.jpg与数据4 图像3.jpg与数据5,6
图像div之间的div数是随机的
有没有办法计算两个div与类图像之间的div数,即使它们没有嵌套。
如果问题看起来很复杂,我很抱歉,但如果仔细看一下,我向你保证这个问题非常简单。
答案 0 :(得分:2)
您可以尝试使用循环(foreach)检查序列。检查div是否有图像类,是否增加了分组键,否则,使用当前键并推送数据。
粗略的例子:
$data = array();
$html = str_get_html($html_markup);
$current_key = 0;
foreach ($html->find('div') as $div) {
if($div->class == 'image') {
$current_key++;
$data[$current_key]['image'] = $div->find('img', 0)->src;
}
if($div->class == 'data') {
$data[$current_key]['data'][] = $div->innertext;
}
}
echo '<pre>';
print_r($data);
数据应分组如下:
Array
(
[1] => Array
(
[image] => 1.jpg
[data] => Array
(
[0] => lorem ipsum 1
[1] => lorem ipsum 2
[2] => lorem ipsum 3
)
)
[2] => Array
(
[image] => 2.jpg
[data] => Array
(
[0] => lorem ipsum 4
)
)
[3] => Array
(
[image] => 3.jpg
[data] => Array
(
[0] => lorem ipsum 5
[1] => lorem ipsum 6
)
)
)