【问题标题】:How to get elements from the end with PHPQuery?如何使用 PHPQuery 从末尾获取元素?
【发布时间】:2017-05-05 18:21:05
【问题描述】:

如何从最后按顺序获取元素?

例如,我需要从最后获取第二个项目。

<?php
  $html = <<<EOD
<div style="text-align: center;" class="navigation">
        <span class="pagination">
          <span>« novější</span> | 
          <span>1</span> | 
          <a href="?listType=&amp;sort=&amp;page=1">2</a> | 
          <a href="?listType=&amp;sort=&amp;page=2">3</a> | 
          <a href="?listType=&amp;sort=&amp;page=3">4</a> | 
          <a href="?listType=&amp;sort=&amp;page=1">starší »</a>
        </span>
      </div>
EOD;

  $dom = PHPQuery::newDocument($html);
  var_dump($dom->find('.navigation > .pagination > *')->eq(-2)->text());
  var_dump($dom->find('.navigation > .pagination > *:last-child(2)')->text());

但此代码返回的不是 4:

string(0) ""
string(11) "starší »"

【问题讨论】:

  • 你想要这个starší作为输出吗?
  • 为什么不: $dom->find('.navigation > .pagination > *:eq(-2)')->text() ? last-child(2) 是否在 PHPQuery 中接受参数,因为在 jQuery 中它不接受并且只返回最后一个孩子,在你的情况下是“starší »”。

标签: php parsing phpquery


【解决方案1】:

希望这对您有所帮助。这里我们使用DOMDocumentDOMXPath 来获得所需的输出。

<?php
ini_set('display_errors', 1);
$html = <<<EOD
<div style="text-align: center;" class="navigation">
        <span class="pagination">
          <span>« novější</span> | 
          <span>1</span> | 
          <a href="?listType=&amp;sort=&amp;page=1">2</a> | 
          <a href="?listType=&amp;sort=&amp;page=2">3</a> | 
          <a href="?listType=&amp;sort=&amp;page=3">4</a> | 
          <a href="?listType=&amp;sort=&amp;page=1">starší »</a>
        </span>
      </div>
EOD;
$domObject= new DOMDocument();
$domObject->loadHTML($html);

$domQuery= new DOMXPath($domObject);
$results=$domQuery->query('//span[@class="pagination"]/a');
$contents=array();
foreach ($results as $result)
{
    $contents[]=$result->textContent;
}
print_r(array_reverse($contents));

输出:

Array
(
    [0] => starší »
    [1] => 4
    [2] => 3
    [3] => 2
)

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2016-03-30
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多