Как получить URL следующей страницы с помощью phpQuery? - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть пользовательский шаблон разбиения на страницы HTML:

<ul class="number-list">       
    <li><a href="/article/" class="page-number js-page-filter " data-page="1">1</a></li>
    // Current page with class [.red]
    <li><a href="/article/?page=2" class="page-number js-page-filter red" data-page="2">2</a></li>
    <li><a href="/article/?page=3" class="page-number js-page-filter " data-page="3">3</a></li>
    <li><a href="/article/?page=4" class="page-number js-page-filter " data-page="4">4</a></li>
    <li><a href="/article/?page=5" class="page-number js-page-filter " data-page="5">5</a></li>
    <li><span class="page-number">...</span></li>
    <li><a href="/article/?page=31" class="page-number js-page-filter " data-page="31">31</a></li>
    <li><a href="/article/?page=32" class="page-number js-page-filter " data-page="32">32</a></li>
</ul>

Я могу получить URL текущей страницы, используя этот код:

$current = $doc->find('.number-list li a.red')->attr('href');

Как я могу получить URL следующей страницы в моем случае?

Я устал:

$next = $doc->find('.number-list li a.red')->next('a')->attr('href');
$next = $doc->find('.number-list li a.red')->next('li a')->attr('href');
$next = $doc->find('.number-list li a.red')->next('.page-number')->attr('href');
$next = $doc->find('li a.red')->next('li a')->attr('href');
$next = $doc->find('li a.red')->next('li .page-number')->attr('href');

1 Ответ

0 голосов
/ 11 ноября 2018

Andreas. Вы можете получить все <li> и проверить, имеет ли он <a> класс red. Этот элемент будет вашим текущим, после этого вы можете получить следующий элемент. Надеюсь, это поможет вам.

$document = phpQuery::newDocument('
<ul class="number-list">       
    <li><a href="/article/" class="page-number js-page-filter " data-page="1">1</a></li>
    <li><a href="/article/?page=2" class="page-number js-page-filter red" data-page="2">2</a></li>
    <li><a href="/article/?page=3" class="page-number js-page-filter " data-page="3">3</a></li>
    <li><a href="/article/?page=4" class="page-number js-page-filter " data-page="4">4</a></li>
    <li><a href="/article/?page=5" class="page-number js-page-filter " data-page="5">5</a></li>
    <li><span class="page-number">...</span></li>
    <li><a href="/article/?page=31" class="page-number js-page-filter " data-page="31">31</a></li>
    <li><a href="/article/?page=32" class="page-number js-page-filter " data-page="32">32</a></li>
</ul>
');

$lis = $document->find('.number-list li');
foreach ($lis as $li)
{
    if(pq($li)->find('a')->hasClass('red'))
    {
       var_dump(pq($li)->next()->find('a')->attr('href')); // get the next li and it a tag
    }
}
...