DomCrawler, выбирая класс в определенной позиции с помощью first () или last () или eq () - PullRequest
1 голос
/ 10 октября 2019

Я немного озадачен выбором одной class между его братьями и сестрами ... Html структура, как показано ниже.

<ul class="pipeLink">
  <li class="pg">1</li><li class="pg"><a href="/wedding/clientList/?pn=2&amp;tdfkn=14">2</a></li>
  <li class="pg"><a href="/wedding/clientList/?pn=3&amp;tdfkn=14">3</a></li>
  <li class="pg"><a href="/wedding/clientList/?pn=4&amp;tdfkn=14">4</a></li>
  <li class="pg"><a href="/wedding/clientList/?pn=5&amp;tdfkn=14">5</a></li>
  <li class="pg"><a href="/wedding/clientList/?pn=6&amp;tdfkn=14">6</a></li>
  <li class="pg"><a href="/wedding/clientList/?pn=7&amp;tdfkn=14">7</a></li>
  <li class="pg"><a href="/wedding/clientList/?pn=8&amp;tdfkn=14">8</a></li>
  <li class="lastChild">
      <a href="/wedding/clientList/?pn=2&amp;tdfkn=14">next 30</a></li>
</ul>

На странице 2 ul.pipeLine класса. В верхней части страницы и внизу. Я просто хочу взять первый или второй ul.pipeLine и повторить атрибут тега в нем. Поэтому я попробовал это с кодом ниже.

$links = $response->filter("ul.pipeLink")->last()->each(function($node){
    return $node->filter("li a")->attr("href");
});

Но когда я использую last() или first() или eq(0) и т. Д. ... он получает только один атрибут внутри тега, ничего больше. Хотя я хотел взять только один ul.pipeLine класс на странице и выполнить итерации внутри него.

Я имею в виду, что ожидаемый результат должен быть таким:

/wedding/clientList/?pn=2&amp;tdfkn=14
/wedding/clientList/?pn=3&amp;tdfkn=14
/wedding/clientList/?pn=4&amp;tdfkn=14
/wedding/clientList/?pn=5&amp;tdfkn=14
/wedding/clientList/?pn=6&amp;tdfkn=14
/wedding/clientList/?pn=7&amp;tdfkn=14
/wedding/clientList/?pn=8&amp;tdfkn=14

Но это как:

/wedding/clientList/?pn=2&amp;tdfkn=14

Возможно ли это сделать?

1 Ответ

1 голос
/ 10 октября 2019

Хорошо, я решил проблему и разместил ее здесь в качестве ответа для тех, кто сталкивается с этим позже.

$links = $response->filter("ul.pipeLink")->last()->children("li a")->each(function($node){
    return $node->attr("href");
});
...