首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用php从xpath中获得结果?

如何使用php从xpath中获得结果?
EN

Stack Overflow用户
提问于 2017-11-01 18:10:40
回答 1查看 95关注 0票数 3

我试图使用php..but获取xpath/html文本,但没有成功。

示例:https://safeweb.norton.com/report/show?url=google.com

我的xpath (这是正确的,我已经检查过了) //*[@id="bodyContent"]/div/div/div[3]/div[1]/div[1]/div[2]/div[1]/div/b

我想得到一个使用php在这里出现的<div> result </div>的结果

下面是我的代码:

代码语言:javascript
复制
<?php
public function getNortonSafe($domain)
{
  try
  {
    $callback_url = "https://safeweb.norton.com/report/show?url=google.com"; //. $domain;

    $curl_response = $this->curl->get($callback_url);

    if ($curl_response->headers['Status-Code'] == "200") {

      libxml_use_internal_errors(TRUE);
      $this->dom_doc->loadHTML($curl_response);
      libxml_use_internal_errors(FALSE);

      $xpath = new DOMXPath($this->dom_doc);
      $tmp = $xpath->query('//*[@id="bodyContent"]/div/div/div[3]/div[1]/div[1]/div[2]/div[1]/div/b')->item(0)->textContent);

      $tmp = explode(' ', trim($tmp));
      $norton_site_test = str_replace(",", "", $tmp[0]);

    } else {
      $norton_site_test = "0";
    }

    $response = array(
      'status' => 'success',
      'data' => array(
        'norton_site_test' => filter_var($norton_site_test, FILTER_SANITIZE_STRING)
      )
    );

  }
  catch (Exception $e)
  {
    $response = array(
      'status' => 'error',
      'msg' => $e->getMessage()
    );
  }
  return $response;
}
?>

HTML

代码语言:javascript
复制
<body>
<p id="norton_site_test">  result-text-here </p>
</body>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-01 19:04:11

执行$xpath->query('some xpath here')->text(0)行时会发生错误:Fatal error: Call to undefined method DOMNodeList::text()。请检查您的PHP 错误报告设置。

DOMXPath::query方法返回只有item方法的DOMNodeList对象(参见DOMNodeList)。你需要打电话:

$xpath->query('some xpath here')->item(0)->textContent

从接收到的DOMNodeList对象获取第一个节点的文本内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47061158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档