我有一个像这样呈现html的页面:
<div class="details">
<table>
<tr>
<th class="field">Title</th>
<td class="value">Laravel for Noobs</td>
</tr>
<tr>
<th class="field">Type</th>
<td class="value">PDF Book</td>
</tr>
</table>
</div>
我想要做的是遍历每个<tr></tr>
并解析<th class="field">???</th>
和<td class="value">???</td>
的值。
例如,我想从上面的html生成这样的数组:
$details = [
['field' => 'Title', 'value' => 'Laravel for Noobs'],
['field' => 'Type', 'value' => 'PDF Book']
];
根据我在文档中看到的内容:
我尝试了以下内容:
$details = [];
$crawler->filter('.details table tr')->each(function ($node) use(&$details) {
$field = $node->filter('th .field')->first()->text();
$value = $node->filter('td .value')->first()->text();
$details[] = [
'field' => $field,
'value' => $value
];
});
当我尝试上述操作时,出现以下错误:
当前节点列表为空。
关于如何实现这一目标的任何想法?在初始过滤后,是否可以进一步过滤节点?