$html =<<<STR
<div id="demo">
<ul>
<li>
<h3>xxx</h3>
<div class="list">
<div class="item">item1</div>
<div class="item">item2</div>
</div>
</li>
<li>
<h3>xxx2</h3>
<div class="list">
<div class="item">item12</div>
<div class="item">item22</div>
</div>
</li>
</ul>
</div>
STR;
$data = QueryList::html($html)->rules(array(
'title' => array('h3','text'),
'list' => array('.list','html')
))->range('#demo li')->queryData(function($item){
// 注意这里的QueryList对象与上面的QueryList对象是同一个对象
// 所以这里要重置range()参数,否则会共用前面的range()参数,导致出现采集不到结果的诡异现象
$item['list'] = QueryList::html($item['list'])->rules(array(
'item' => array('.item','text')
))->range('')->queryData();
return $item;
});
dump($data);
我运行得到数据:
Array ( [0] => Array ( [title] => xxx [list] => Array ( [item] => item1item2 ) ) [1] => Array ( [title] => xxx2 [list] => Array ( [item] => item12item22 ) ) )
item 组合错误
php版本:7.4
QueryList:4.2
这是为什么?