XPath表达式设置空索引

时间:2015-01-30 11:13:33

标签: php xpath

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

)

1 个答案:

答案 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>

然后只需检查代码中的顺序。