我有这种HTML,(这里简化)。
<ul>
<li>
<div class="name">Name 1</div>
<div class="phone">phone 1</div>
</li
<li>
<div class="name">Name 2</div>
// no div available here
</li
<li>
<div class="name">Name 3</div>
<div class="phone">phone 3</div>
</li
</ul>
xPaths看起来像这样,
$names = $crawler->filterXPath('//ul//li//div[@class="name"]')->extract('_text');
$phones = $crawler->filterXPath('//ul//li//div[@class="phone"]')->extract('_text');
返回这些数组,
$names = array(
0 => Name 1
1 => Name 2
2 => Name 3
)
$phones = array(
0 => Phone 1
1 => Phone 3
)
现在我想,如果xpath在索引1处找不到任何div,则应该替换为null或空。
因此这两个数组的索引应该与
相同$phones = array(
0 => Phone 1
1 => null or empty
2 => Phone 3
)
答案 0 :(得分:0)
我想你想要联想电话和名字...... 这个答案不完全是你想要的,但你可以将这两个查询结合起来
//ul//li//div[@class="name"] | //ul//li//div[@class="phone"]
并按顺序得到节点
<div class="name">Name 1</div>
<div class="phone">phone 1</div>
<div class="name">Name 2</div>
<div class="name">Name 3</div>
<div class="phone">phone 3</div>
然后只需检查代码中的顺序。