QueryList递归多级采集,文档示例和实际不一致

新手上路,请多包涵
$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

这是为什么?

阅读 1.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题