用于设置空索引的 XPath 表达式


XPath expression to set empty index

我有这种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>

接下来只需检查代码中的顺序。