1

phpQuery用来解析一些HTML与此结构类似的:

<div>
    <span>Name</span>
    <span>John</span>
    <span>Age</span>
    <span>23</span>
    <span>Location</span>
    <span>London</span>
</div>

我需要将所有这些信息收集到一个关联数组中,所以我正在做这样的事情:

$doc = new phpQuery($html);
foreach($doc['div span'] as $span){
    $text = pq($span)->text();
    // do some other stuff with $text
}

请注意$doc$doc['div span']phpQueryObject实现IteratorCountable的s ArrayAccess

现在,为了关联这些数据,我不得不使用一个变量来存储当前状态(标题或值),这不是很优雅。我想做的是能够一次迭代 2 个项目。foreach我发现的一个解决方案是使用将所有项目添加到数组来遍历所有对象,然后在该数组上使用next()oreach()以在 while 循环中一次获取 2 个项目,但这一点都不好。请记住,在对象上使用next()或我只是得到它的公共属性,这根本不是我想要的。有没有办法做到这一点并有一个很好的代码?each()phpQuery


注意:虽然这个问题与 相关phpQuery,但我认为这是一个笼统的php问题,不涉及phpQuery知识。

4

1 回答 1

1

如问题所述,phpQuery实现Iterator.

所以我想说这可能是你可以做你想做的最干净的方式:

$doc = new phpQuery($html);
$elements = $doc['div span'];

foreach($elements as $span){
    $key = pq($span)->text();
    $elements->next();
    $value = pq($elements->current())->text();
}
于 2012-11-26T04:33:01.213 回答