XPath выражение для установки пустого индекса

0

У меня такой вид 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 не найдет div в индексе 1, он должен быть заменен на null или пустым.

Поэтому индексы обоих этих массивов должны быть такими же, как,

$phones = array(  
        0    =>    Phone 1  
        1    =>    null or empty
        2    =>    Phone 3  

)
Теги:
xpath

1 ответ

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>

а затем просто проверьте порядок в коде.

  • 0
    Я ценю ваши усилия, но это не то, что я хочу. спасибо, что уделили время.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню