我正在使用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
,Iterator
和Countable
的{{1}}。
现在,为了关联这些数据,我不得不使用一个变量,我存储当前状态(标题或值)并不是很优雅。我想做的是能够一次迭代2个项目。我找到的一个解决方案是使用ArrayAccess
遍历所有对象,将所有项添加到数组中,然后在该数组上使用foreach
或next()
来获取2个项目在一个循环中的时间,但这并不好。请注意,在each()
对象上使用next()
或each()
我只是得到它的公共属性,而这根本不是我想要的。有没有办法做到这一点并有一个很好的代码?
注意:虽然此问题与phpQuery
有关,但我认为这是一般性phpQuery
问题,不涉及php
知识。
答案 0 :(得分: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();
}