【发布时间】:2020-04-08 13:27:22
【问题描述】:
我已经为这个问题苦苦挣扎了一段时间。我正在尝试解析具有许多 div 标签的 html 文档,在这些 div 标签内是其他 div 标签,它们具有我需要解析的一些数据属性。
但是,我确实需要保留 div class="row" 的原始循环。这不能改变。
$test_html = '
<div class="row">
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
</div>
<div class="row">
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
<div class="item">
<div class="op-item op-spread" data-op-info="someinfo1" data-op-source="somesource1" data-op-status="some status">some content 1</div>
<div class="op-item spread-price" data-op-info="someinfo2">some content b</div>
<div class="op-item op-spread" data-op-info="someinfo3" data-op-status="somemoney3" data-op-source="somesource3">some content 3</div>
<div class="op-item spread-price" data-op-info="someinfo4">some content 4</div>
</div>
</div>
';
$html = new simple_html_dom();
$html->load($test_html, true, false);
foreach($html->find('div.row') as $a) {
$item['book']['data'] = $a->find('div.item',0)->outertext;
$item['book']['div1']['data-op-info'] = "someinfo1"; // desired output
$item['book']['div2']['data-op-info'] = "someinfo2"; // desired output
$item['book']['div3']['data-op-info'] = "someinfo3"; // desired output
$item['book']['div4']['data-op-info'] = "someinfo4"; // desired output
//$item['book']['div1'] = $a->find('div.item',1)->outertext;
//$item['book']['div2'] = $a->find('div.item',2)->outertext;
//$item['book']['div3'] = $a->find('div.item',3)->outertext;
$data[] = $item;
}
print_r($data);
我希望有人能够帮助我,我一直在努力解决这个问题。
【问题讨论】:
标签: php html-parsing simple-html-dom