我有这种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>
xPath 看起来像这样,
$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
)
我想你想要关联电话和名字......这个答案不完全是你想要的,但是,你可以合并这两个查询
//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>
接下来只需检查代码中的顺序。