【问题标题】:Get last li content Xpath php获取最后 li 内容 Xpath php
【发布时间】:2015-10-23 15:00:17
【问题描述】:

我有下一个 html:

<ul class="pages">
<li class="page-1 active"><a data-page="1" href="/sold?page=1">1</a></li>
<li class="page-2"><a data-page="2" href="/sold?page=2">2</a></li>
<li class="page-3"><a data-page="3" href="/sold?page=3">3</a></li>
<li>...</li>
<li class="page-975"><a data-page="975" href="/sold?page=975">975</a></li>
</ul>

我正在尝试借助 Xpath 获取包含最后一页编号(在我的示例中为 975)的最后一个 li 的文本。

我尝试过类似的方法:

$page_count = $xpath->query(".//ul[@class='pages']/li/a[last()]/text()")->item(0)->textContent;

但它不起作用。

获取 last li 文本的正确查询是什么?

【问题讨论】:

  • li/a[last()] 获取所有谎言,然后是 &lt;li&gt; 中的最后一个 &lt;a&gt;。你会想要li[last()]/a
  • 已尝试但在查询中收到“尝试获取非对象的属性”通知
  • @TareqAl-Zubaidi 我见过那个,但不幸的是最后一个 li 元素的类是未知的,因为它每次都会不同......

标签: php xpath domxpath


【解决方案1】:

试试这个:

$page_count = $xpath->query(".//ul[@class='pages']/li[last()]/a/text()")->item(0)->nodeValue;

首先:您需要获取最后一个li,然后是其a-元素的文本

您的版本基本上搜索所有li-元素并在其中搜索最后一个a-元素(它们只有一个),然后搜索它们的文本属性。所以你基本上得到了所有文本的列表。

第二个:尝试nodeValue 而不是textContent

【讨论】:

  • 用代码获取“尝试获取非对象的属性”通知
  • 什么是完整的查询代码(以$page_count =开头)?
  • 尝试 nodeValue 而不是 textContent (但我只是猜测,我不是 php 专家 =(
  • 好的,第一个代码(在顶部)有效,第二个版本返回“1”
  • 编辑您的答案以在整个代码中包含顶级代码,我会接受 :) 非常感谢您帮助我!
猜你喜欢
  • 2016-04-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 2015-07-20
  • 2017-12-20
  • 1970-01-01
相关资源
最近更新 更多